package preface
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:
- using the minimal definition or implement as few combiners as possible. Some abstractions offer several minimal definitions, so it is up to you to choose the path that seems most relevant .
- A construction on top of another abstraction (ie:
Preface_specs.MONOIDdefined over aPreface_specs.SEMIGROUP) - A manual approach where each feature has to be provided (while offering intermediate functors to avoid boring tasks such as defining infixed operators).
- A simplification of an existing abstraction, such as turning a
Preface_specs.ALTERNATIVEinto aPreface_specs.MONOIDby fixing the type of the Alternative. - Using a fixed algebra. For example, the sum, product or composition of
Preface_specs.FUNCTOR.
Monoid hierarchy
module Semigroup : sig ... endBuilding a Preface_specs.Semigroup
module Monoid : sig ... endBuilding a Preface_specs.Monoid
Functor hierarchy
module Functor : sig ... endBuilding a Preface_specs.Functor
module Alt : sig ... endBuilding a Preface_specs.Alt
module Applicative : sig ... endBuilding a Preface_specs.Applicative
module Alternative : sig ... endBuilding a Preface_specs.Alternative
module Selective : sig ... endBuilding a Preface_specs.Selective
module Monad : sig ... endBuilding a Preface_specs.Monad
module Monad_plus : sig ... endBuilding a Preface_specs.Monad_plus
module Comonad : sig ... endBuilding a Preface_specs.Comonad
module Foldable : sig ... endBuilding a Preface_specs.Foldable
module Traversable : sig ... endBuilding a Preface_specs.Traversable
Contravariant hierarchy
module Contravariant : sig ... endBuilding a Preface_specs.Contravariant
module Divisible : sig ... endBuilding a Preface_specs.Divisible
Bifunctor hierarchy
module Bifunctor : sig ... endBuilding a Preface_specs.Bifunctor
Profunctor hierarchy
module Profunctor : sig ... endBuilding a Preface_specs.Profunctor
module Strong : sig ... endBuilding a Preface_specs.Strong
module Choice : sig ... endBuilding a Preface_specs.Choice
module Closed : sig ... endBuilding a Preface_specs.Closed
Arrow hierarchy
module Category : sig ... endBuilding a Preface_specs.Category
module Arrow : sig ... endBuilding a Preface_specs.Arrow
module Arrow_zero : sig ... endBuilding a Preface_specs.Arrow_zero
module Arrow_alt : sig ... endBuilding a Preface_specs.Arrow_alt
module Arrow_plus : sig ... endBuilding a Preface_specs.Arrow_plus
module Arrow_choice : sig ... endBuilding a Preface_specs.Arrow_choice
module Arrow_apply : sig ... endBuilding a Preface_specs.Arrow_apply
Transformers
Monad Transformers
module Reader : sig ... endBuilding a Preface_specs.Reader, a Reader transformer.
module Writer : sig ... endBuilding a Preface_specs.Writer, a Writer transformer.
module State : sig ... endBuilding a Preface_specs.State, a State transformer.
Comonad Transformers
module Store : sig ... endBuilding a Preface_specs.Store, a Store transformer.
module Env : sig ... endBuilding a Preface_specs.Env, an Env transformer.
module Traced : sig ... endBuilding a Preface_specs.Traced, a Traced transformer.
Free constructions
module Free_applicative : sig ... endBuilding a Preface_specs.Free_applicative
module Free_selective : sig ... endBuilding a Preface_specs.Free_selective
module Free_monad : sig ... endBuilding a Preface_specs.Free_monad
module Freer_monad : sig ... endBuilding a Preface_specs.Freer_monad