module Modules : sig ... end

Modular interface.

module Values : sig ... end

First-class module interface.

include module type of struct include Modules end with module Applicative := Modules.Applicative

Modular interface.

module type TypeS = Modules.TypeS

Just a type `t`. Used for

module Monoid = Modules.Monoid

Monoid.S is a signature for a monoid (a type `t` with `zero` and `+`), and 'a Monoid.t is the type for monoids represented as first-class modules.

module Functor = Modules.Functor

Functor.S is a signature for a functor (a type 'a `t` with `map`).

type ('a, 'b) length = ('a, 'b) Modules.length =
  1. | Zero : (unit, unit) length
  2. | Succ : ('a, 'b) length -> (_ * 'a, _ * 'b) length
module type SequenceOfUnaryTypeS = Modules.SequenceOfUnaryTypeS
module Sequence = Modules.Sequence
module type SequenceOfBinaryTypeS = Modules.SequenceOfBinaryTypeS
module Arity = Modules.Arity
exception StructuralMismatch
include module type of struct include Values end with module Applicative := Values.Applicative

First-class module interface.

include sig ... end
include sig ... end
include sig ... end
module Applicative : sig ... end
module Primitives : sig ... end