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