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