module Monad (X : sig
(
X
:
sig
type t
end) : sig .. end
end
)
sig type t end
type 'a t = X.t -> 'a
'a
X.t -> 'a
val return : 'a -> 'a t
'a -> 'a t
val (>|=) : 'a t -> ('a -> 'b) -> 'b t
'a t -> ('a -> 'b) -> 'b t
val (>>=) : 'a t -> ('a -> 'b t) -> 'b t
'a t -> ('a -> 'b t) -> 'b t