sig
module type Basic =
sig
type 'a t
val bind : 'a t -> ('a -> 'b t) -> 'b t
val return : 'a -> 'a t
end
module type Infix =
sig
type 'a monad
val ( >>= ) : 'a monad -> ('a -> 'b monad) -> 'b monad
val ( >>| ) : 'a monad -> ('a -> 'b) -> 'b monad
end
module type S =
sig
type 'a monad
val ( >>= ) : 'a monad -> ('a -> 'b monad) -> 'b monad
val ( >>| ) : 'a monad -> ('a -> 'b) -> 'b monad
module Monad_infix :
sig
type 'a monad = 'a monad
val ( >>= ) : 'a monad -> ('a -> 'b monad) -> 'b monad
val ( >>| ) : 'a monad -> ('a -> 'b) -> 'b monad
end
val bind : 'a monad -> ('a -> 'b monad) -> 'b monad
val return : 'a -> 'a monad
val map : 'a monad -> f:('a -> 'b) -> 'b monad
val join : 'a monad monad -> 'a monad
val ignore : 'a monad -> unit monad
val unit : unit monad
end
module Make :
functor (M : Basic) ->
sig
type 'a monad = 'a M.t
val ( >>= ) : 'a monad -> ('a -> 'b monad) -> 'b monad
val ( >>| ) : 'a monad -> ('a -> 'b) -> 'b monad
module Monad_infix :
sig
type 'a monad = 'a monad
val ( >>= ) : 'a monad -> ('a -> 'b monad) -> 'b monad
val ( >>| ) : 'a monad -> ('a -> 'b) -> 'b monad
end
val bind : 'a monad -> ('a -> 'b monad) -> 'b monad
val return : 'a -> 'a monad
val map : 'a monad -> f:('a -> 'b) -> 'b monad
val join : 'a monad monad -> 'a monad
val ignore : 'a monad -> unit monad
val unit : unit monad
end
end