sig
  type ('a, 'b) t
  val bind :
    ('a, 'b) Monad.Basic2.t ->
    ('-> ('c, 'b) Monad.Basic2.t) -> ('c, 'b) Monad.Basic2.t
  val return : '-> ('a, 'b) Monad.Basic2.t
end