include Def with type +'a t = 'a M.t
val (>>=) : 'a t -> ('a -> 'b t) -> 'b tval (>>) : unit t -> 'a t -> 'a tval map : ('a -> 'b) -> 'a t -> 'b tThe monadic laws must hold:
(x>>=f)>>=g = x>>=fun x' -> (f x'>>=g)return a >>= f = f ax>>=return = x
As well as the following identities:
x >> y = x >>= fun () -> ymap f x = x >>= fun x' -> f x'