MndSourceA binary monad interprets a type ('a, 'b) t as computation of values of type 'a. Note that combining such monads requires the second type 'b to be equal in all of them.
module Make2WithProduct
(M : sig ... end) :
MONAD2_WITH_AND with type ('a, 'b) t = ('a, 'b) M.tA unary monad interprets a type 'a t as computation of values of type 'a.
The fundamental functions defining a monad, i.e. what you need to implement in order to instantiate a monad with Make
The monad interface with let*-syntax, common operators and functions. These are the elements you get when instantiating a monad with Make.
Functor to instantiate the MONAD interface for custom monads by providing a MONAD_DEF.