include Def
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 a
- x>>=return=- x
As well as the following identities:
- x >> y=- x >>= fun () -> y
- map f x=- x >>= fun x' -> f x'