import { Sequence } from '../../core';
import { compose } from '../../../../helper/compose';
compose(Sequence, class extends Sequence {
public override fmap(f: (a: a) => b): Sequence> {
return new Sequence>((iter = () => this.iterate()) =>
Sequence.Iterator.when>>(
iter(),
() => Sequence.Data.cons(),
thunk => Sequence.Data.cons(f(Sequence.Thunk.value(thunk)), Sequence.Thunk.iterator(thunk))));
}
});