1234567891011121314151617181920212223242526272829303132333435363738394041424344454647(* This file is free software, part of gen. See file "license" for more details. *)type'agen=unit->'aoptionmoduletypeMONAD=sigtype+'atvalreturn:'a->'atval(>>=):'at->('a->'bt)->'btval(>|=):'at->('a->'b)->'btendmoduletypeS=sigmoduleM:MONADtype+'at=unit->'aoptionM.t(** A value of type ['a t] is an iterator over values of type ['a]
that live in the monad [M.t]. For instance, if [M] is [Lwt], accessing
each element might require some IO operation (reading a file, etc.) *)valreturn:'a->'atvalsequence_m:'aM.tgen->'at(** From a generator of actions, return an effectful generator *)valmap:('a->'b)->'at->'btvalflat_map:('a->'bt)->'at->'btvalfold:('a->'b->'a)->'a->'bt->'aM.tvalfold_m:('a->'b->'aM.t)->'a->'bt->'aM.tvaliter:('a->unit)->'at->unitM.tvaliter_s:('a->unitM.t)->'at->unitM.tvaliter_p:('a->unitM.t)->'at->unitM.tmoduleInfix:sigval(>>=):'at->('a->'bt)->'btval(>|=):'at->('a->'b)->'btendincludemoduletypeofInfixend