List.MonadicMonadic list functions
module M : Interfaces.MONADfold_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 ->
...)