functor (M : Monad.Basic->
  sig
    val traverse : ('-> 'M.t) -> 'a t -> 'b t M.t
    val traverse_ : ('-> 'M.t) -> 'a t -> unit M.t
    val sequence : 'M.t t -> 'a t M.t
    val sequence_ : 'M.t t -> unit M.t
    val foldr_m : ('-> '-> 'M.t) -> '-> 'a t -> 'M.t
    val foldl_m : ('-> '-> 'M.t) -> '-> 'a t -> 'M.t
  end