sig
  type 'a t
  val bind : 'Monad.Basic.t -> ('-> 'Monad.Basic.t) -> 'Monad.Basic.t
  val return : '-> 'Monad.Basic.t
end