Ваш значительно быстрее (и вызывает меньше 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