functor (M : Core.Monad.Basic->
  sig
    val ( >>= ) : 'M.t -> ('-> 'M.t) -> 'M.t
    val ( >>| ) : 'M.t -> ('-> 'b) -> 'M.t
    module Monad_infix :
      sig
        val ( >>= ) : 'M.t -> ('-> 'M.t) -> 'M.t
        val ( >>| ) : 'M.t -> ('-> 'b) -> 'M.t
      end
    val bind : 'M.t -> ('-> 'M.t) -> 'M.t
    val return : '-> 'M.t
    val map : 'M.t -> f:('-> 'b) -> 'M.t
    val join : 'M.t M.t -> 'M.t
    val ignore : 'M.t -> unit M.t
    val all : 'M.t list -> 'a list M.t
    val all_ignore : unit M.t list -> unit M.t
    val map_monad : 'a list -> f:('-> 'M.t) -> 'b list M.t
    val map_monad_ignore : 'a list -> f:('-> unit M.t) -> unit M.t
  end