List.Monadic
Monadic list functions
module M : Interfaces.MONAD
fold_left f lst start
leftfolds the function f
over the list lst
starting with the value start
. Continuation of the fold is determined by the bind operator >>=
of the monad M
. E.g. if the monad M
is Option
the folding stops as soon as f e acc
returns the value None
.
fold_left f [a b c ...] s =
M.(f a s >>= fun acc ->
f b acc >>= fun acc ->
f c acc >>= fun acc ->
...)
The same as fold_left
just right folding.
fold_right f [... x y z] s =
fold_left f (rev [... x y z]) s =
M.(f z s >>= fun acc ->
f y acc >>= fun acc ->
f x acc >>= fun acc ->
...)