val return : 'a -> 'a t
return x creates a singleton container holding
val fold : 'a t -> init:'s -> f:('s -> 'a -> ('s -> 'r) -> 'r) -> ('s -> 'r) -> 'r
fold xs ~init:s ~f a delayed fold implementation. It is the same as a regular
fold except that function
f accepts an extra continuation argument, and the
fold expression returns a continuation.