Module Preface_make

Set of functors (in ML sense) whose role is to concretise the abstractions described in Preface_specs. Each abstraction described in the specifications has its image in Preface.Make and the functors take as arguments modules constrained by the signatures described in Preface_specs and produce modules whose complete interface is also described in Preface_specs.)

For a detailed description of the module breakdown logic, go to the homepage.

Multiple path

The concretisation of an abstraction usually offers several paths:

Monoid hierarchy

module Semigroup : sig ... end
module Monoid : sig ... end

Functor hierarchy

module Functor : sig ... end
module Alt : sig ... end
module Applicative : sig ... end
module Alternative : sig ... end
module Selective : sig ... end
module Monad : sig ... end
module Monad_plus : sig ... end
module Comonad : sig ... end
module Foldable : sig ... end
module Traversable : sig ... end

Contravariant hierarchy

module Contravariant : sig ... end
module Divisible : sig ... end

Bifunctor hierarchy

module Bifunctor : sig ... end

Profunctor hierarchy

module Profunctor : sig ... end
module Strong : sig ... end
module Choice : sig ... end
module Closed : sig ... end

Arrow hierarchy

module Category : sig ... end
module Arrow : sig ... end
module Arrow_zero : sig ... end
module Arrow_alt : sig ... end
module Arrow_plus : sig ... end
module Arrow_choice : sig ... end
module Arrow_apply : sig ... end

Transformers

Monad Transformers

module Reader : sig ... end

Building a Preface_specs.Reader, a Reader transformer.

module Writer : sig ... end

Building a Preface_specs.Writer, a Writer transformer.

module State : sig ... end

Building a Preface_specs.State, a State transformer.

Comonad Transformers

module Store : sig ... end

Building a Preface_specs.Store, a Store transformer.

module Env : sig ... end

Building a Preface_specs.Env, an Env transformer.

module Traced : sig ... end

Building a Preface_specs.Traced, a Traced transformer.

Free constructions

module Free_applicative : sig ... end
module Free_selective : sig ... end
module Free_monad : sig ... end
module Freer_monad : sig ... end