Parameter Make.1-M

type +'a t
val return : 'a -> 'a t
val (>>=) : 'a t -> ( 'a -> 'b t ) -> 'b t
val (>>) : unit t -> 'a t -> 'a t
val map : ( 'a -> 'b ) -> 'a t -> 'b t

The monadic laws must hold:

As well as the following identities: