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_indexed = Basic_indexed
module type Infix_indexed = Infix_indexed
module type Syntax_indexed = Syntax_indexed
module type S_without_syntax = S_without_syntax
module Make_indexed : functor (X : Basic_indexed) -> S_indexed with type (a, d, e) t := (a, d, e) X.t