import { Sequence } from '../../core'; import { compose } from '../../../../helper/compose'; compose(Sequence, class extends Sequence { public override scanl(f: (b: b, a: a) => b, z: b): Sequence, number]> { return new Sequence, number]>(([prev, iter, i] = [z, () => this.iterate(), 0]) => Sequence.Iterator.when, number]>>( iter(), () => i === 0 ? Sequence.Data.cons(z) : Sequence.Data.cons(), thunk => Sequence.Data.cons, number]>( prev = f(prev, Sequence.Thunk.value(thunk)), [prev, Sequence.Thunk.iterator(thunk), Sequence.Thunk.index(thunk) + 1]))); } });