A monad is an abstraction of the concept of sequencing of computations. A value of
type 'a monad represents a computation that returns a value of type 'a.
module type Basic = Base__.Monad_intf.Basicmodule type Basic2 = Base__.Monad_intf.Basic2module type Basic3 = Base__.Monad_intf.Basic3module type Basic_indexed = Base__.Monad_intf.Basic_indexedmodule type Infix = Base__.Monad_intf.Infixmodule type Infix2 = Base__.Monad_intf.Infix2module type Infix3 = Base__.Monad_intf.Infix3module type Infix_indexed = Base__.Monad_intf.Infix_indexedmodule type Syntax = Base__.Monad_intf.Syntaxmodule type Syntax2 = Base__.Monad_intf.Syntax2module type Syntax3 = Base__.Monad_intf.Syntax3module type Syntax_indexed = Base__.Monad_intf.Syntax_indexedmodule type S_without_syntax = Base__.Monad_intf.S_without_syntaxmodule type S = Base__.Monad_intf.Smodule type S2 = Base__.Monad_intf.S2module type S3 = Base__.Monad_intf.S3module type S_indexed = Base__.Monad_intf.S_indexedmodule Make_indexed : functor (X : Basic_indexed) -> S_indexed with type (a, d, e) t := (a, d, e) X.t