Ленивое декартово произведение нескольких последовательностей (последовательность последовательностей)

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

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 
8
задан Vladimir Reshetnikov 27 June 2011 в 18:09
поделиться