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