module type Monad = sig .. end
sig
end
type +'a m
+'a
val return : 'a -> 'a m
'a -> 'a m
val fail : string -> 'a m
string -> 'a m
val (>>=) : 'a m -> ('a -> 'b m) -> 'b m
'a m -> ('a -> 'b m) -> 'b m
val (>>) : 'a m -> 'b m -> 'b m
'a m -> 'b m -> 'b m