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 val map : 'a Monad.Basic.t -> f:('a -> 'b) -> 'b Monad.Basic.t end