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 t
val ( >>= ) : 'a t -> ('a -> 'b t) -> 'b t
val ( >>| ) : 'a t -> ('a -> 'b) -> 'b t
end
module type S =
sig
type 'a t
val ( >>= ) : 'a t -> ('a -> 'b t) -> 'b t
val ( >>| ) : 'a t -> ('a -> 'b) -> 'b t
module Monad_infix :
sig
val ( >>= ) : 'a t -> ('a -> 'b t) -> 'b t
val ( >>| ) : 'a t -> ('a -> 'b) -> 'b t
end
val bind : 'a t -> ('a -> 'b t) -> 'b t
val return : 'a -> 'a t
val map : 'a t -> f:('a -> 'b) -> 'b t
val join : 'a t t -> 'a t
val ignore : 'a t -> unit t
val all : 'a t list -> 'a list t
val all_ignore : unit t list -> unit t
end
module Make :
functor (M : Basic) ->
sig
val ( >>= ) : 'a M.t -> ('a -> 'b M.t) -> 'b M.t
val ( >>| ) : 'a M.t -> ('a -> 'b) -> 'b M.t
module Monad_infix :
sig
val ( >>= ) : 'a M.t -> ('a -> 'b M.t) -> 'b M.t
val ( >>| ) : 'a M.t -> ('a -> 'b) -> 'b M.t
end
val bind : 'a M.t -> ('a -> 'b M.t) -> 'b M.t
val return : 'a -> 'a M.t
val map : 'a M.t -> f:('a -> 'b) -> 'b M.t
val join : 'a M.t M.t -> 'a M.t
val ignore : 'a M.t -> unit M.t
val all : 'a M.t list -> 'a list M.t
val all_ignore : unit M.t list -> unit M.t
end
module type Basic2 =
sig
type ('a, 'd) t
val bind : ('a, 'd) t -> ('a -> ('b, 'd) t) -> ('b, 'd) t
val return : 'a -> ('a, 'b) t
end
module type Infix2 =
sig
type ('a, 'd) t
val ( >>= ) : ('a, 'd) t -> ('a -> ('b, 'd) t) -> ('b, 'd) t
val ( >>| ) : ('a, 'd) t -> ('a -> 'b) -> ('b, 'd) t
end
module type S2 =
sig
type ('a, 'd) t
val ( >>= ) : ('a, 'd) t -> ('a -> ('b, 'd) t) -> ('b, 'd) t
val ( >>| ) : ('a, 'd) t -> ('a -> 'b) -> ('b, 'd) t
module Monad_infix :
sig
type ('a, 'd) t = ('a, 'd) t
val ( >>= ) : ('a, 'd) t -> ('a -> ('b, 'd) t) -> ('b, 'd) t
val ( >>| ) : ('a, 'd) t -> ('a -> 'b) -> ('b, 'd) t
end
val bind : ('a, 'd) t -> ('a -> ('b, 'd) t) -> ('b, 'd) t
val return : 'a -> ('a, 'b) t
val map : ('a, 'd) t -> f:('a -> 'b) -> ('b, 'd) t
val join : (('a, 'd) t, 'd) t -> ('a, 'd) t
val ignore : ('a, 'd) t -> (unit, 'd) t
val all : ('a, 'd) t list -> ('a list, 'd) t
val all_ignore : (unit, 'd) t list -> (unit, 'd) t
end
module Check_S2_refines_S :
functor (X : S) ->
sig
type ('a, 'd) t = 'a X.t
val ( >>= ) : ('a, 'd) t -> ('a -> ('b, 'd) t) -> ('b, 'd) t
val ( >>| ) : ('a, 'd) t -> ('a -> 'b) -> ('b, 'd) t
module Monad_infix :
sig
type ('a, 'd) t = ('a, 'd) t
val ( >>= ) : ('a, 'd) t -> ('a -> ('b, 'd) t) -> ('b, 'd) t
val ( >>| ) : ('a, 'd) t -> ('a -> 'b) -> ('b, 'd) t
end
val bind : ('a, 'd) t -> ('a -> ('b, 'd) t) -> ('b, 'd) t
val return : 'a -> ('a, 'b) t
val map : ('a, 'd) t -> f:('a -> 'b) -> ('b, 'd) t
val join : (('a, 'd) t, 'd) t -> ('a, 'd) t
val ignore : ('a, 'd) t -> (unit, 'd) t
val all : ('a, 'd) t list -> ('a list, 'd) t
val all_ignore : (unit, 'd) t list -> (unit, 'd) t
end
module Make2 :
functor (M : Basic2) ->
sig
val ( >>= ) : ('a, 'd) M.t -> ('a -> ('b, 'd) M.t) -> ('b, 'd) M.t
val ( >>| ) : ('a, 'd) M.t -> ('a -> 'b) -> ('b, 'd) M.t
module Monad_infix :
sig
type ('a, 'd) t = ('a, 'd) M.t
val ( >>= ) : ('a, 'd) t -> ('a -> ('b, 'd) t) -> ('b, 'd) t
val ( >>| ) : ('a, 'd) t -> ('a -> 'b) -> ('b, 'd) t
end
val bind : ('a, 'd) M.t -> ('a -> ('b, 'd) M.t) -> ('b, 'd) M.t
val return : 'a -> ('a, 'b) M.t
val map : ('a, 'd) M.t -> f:('a -> 'b) -> ('b, 'd) M.t
val join : (('a, 'd) M.t, 'd) M.t -> ('a, 'd) M.t
val ignore : ('a, 'd) M.t -> (unit, 'd) M.t
val all : ('a, 'd) M.t list -> ('a list, 'd) M.t
val all_ignore : (unit, 'd) M.t list -> (unit, 'd) M.t
end
val ounit_tests : unit -> OUnit.test
end