sig
  type 'a t
  val bind :
    'a Monad_intf.Basic.t ->
    ('a -> 'b Monad_intf.Basic.t) -> 'b Monad_intf.Basic.t
  val return : 'a -> 'a Monad_intf.Basic.t
  val map :
    [ `Custom of
        'a Monad_intf.Basic.t -> f:('a -> 'b) -> 'b Monad_intf.Basic.t
    | `Define_using_bind ]
end