Module Misc_stdlib.Monad

module type Basic2 = sig ... end

Multi parameter monad. The second parameter gets unified across all the computation. This is used to encode monads working on a multi parameter data structure like (('a,'b) result).

module type Basic = sig ... end
module type S2 = sig ... end
module type S = sig ... end
module Make (X : Basic) : S with type 'a t = 'a X.t
module Make2 (X : Basic2) : S2 with type ('a, 'e) t = ('a, 'e) X.t
module Identity : S with type 'a t = 'a
module Option : S with type 'a t = 'a option
module Result : S2 with type ('a, 'e) t = ('a, 'e) result