The functions in Expert
expose internal structure which is normally meant to be
hidden. For example, at least when f
is purely functional, it is not intended for
client code to distinguish between
List.filter xs ~f
|> Sequence.of_list
and
Sequence.of_list xs
|> Sequence.filter ~f
But sometimes for operational reasons it still makes sense to distinguish them. For
example, being able to handle Skip
s explicitly allows breaking up some
computationally expensive sequences into smaller chunks of work.
next_step
returns the next step in a sequence's construction. It is like next
,
but it also allows observing Skip
steps.
val delayed_fold_step : 'a t ‑> init:'s ‑> f:('s ‑> 'a option ‑> k:('s ‑> 'r) ‑> 'r) ‑> finish:('s ‑> 'r) ‑> 'r
delayed_fold_step
is liked delayed_fold
, but f
takes an option where None
represents a Skip
step.