Ваш значительно быстрее (и вызывает меньше GC). Смотрит мне, что у тебя хорошо.

е ли вы предложить более простой и понятный способ написания этой функции?

let cartesian_product sequences = 
    let step acc sequence = seq { 
        for x in acc do 
        for y in sequence do 
        yield Seq.append x [y] }
    Seq.fold step (Seq.singleton Seq.empty) sequences 

Ответы на вопрос(2)

Ваш ответ на вопрос