import { Sequence } from '../../core'; import { compose } from '../../../../helper/compose'; compose(Sequence, class extends Sequence { public override segs(): Sequence, Sequence.Iterator]> { return Sequence.mappend( this .foldr>((a, bs) => bs.take(1) .bind(b => Sequence.mappend( Sequence.from([ Sequence.mappend( Sequence.from([[a]]), Sequence.from(b).map(c => [a, ...c])) ]), bs)) , Sequence.from([Sequence.from([])])) .bind(a => a), Sequence.from([[]])); } });