functor (X : Basic->
  sig
    val ( >>= ) : 'X.t -> ('-> 'X.t) -> 'X.t
    val ( >>| ) : 'X.t -> ('-> 'b) -> 'X.t
    module Monad_infix :
      sig
        val ( >>= ) : 'X.t -> ('-> 'X.t) -> 'X.t
        val ( >>| ) : 'X.t -> ('-> 'b) -> 'X.t
      end
    val bind : 'X.t -> ('-> 'X.t) -> 'X.t
    val return : '-> 'X.t
    val map : 'X.t -> f:('-> 'b) -> 'X.t
    val join : 'X.t X.t -> 'X.t
    val ignore_m : 'X.t -> unit X.t
    val all : 'X.t list -> 'a list X.t
    val all_ignore : unit X.t list -> unit X.t
  end