Preface_make
Set of functors (in ML sense) whose role is to achieve 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.
The achievement of an abstraction usually offers several paths:
Preface_specs.MONOID
defined over a Preface_specs.SEMIGROUP
)Preface_specs.ALTERNATIVE
into a Preface_specs.MONOID
by fixing the type of the Alternative.Preface_specs.FUNCTOR
.module Semigroup : sig ... end
Building a Preface_specs.Semigroup
module Monoid : sig ... end
Building a Preface_specs.Monoid
module Meet_semilattice : sig ... end
Building a Preface_specs.Meet_semilattice
module Join_semilattice : sig ... end
Building a Preface_specs.Join_semilattice
module Bounded_meet_semilattice : sig ... end
Building a Preface_specs.Bounded_meet_semilattice
module Bounded_join_semilattice : sig ... end
Building a Preface_specs.Bounded_join_semilattice
module Bounded_lattice : sig ... end
Building a Preface_specs
.Bounded_lettice
module Lattice : sig ... end
Building a Preface_specs
.Lettice
module Indexed_functor : sig ... end
Building a Preface_specs.Indexed_functor
module Indexed_alt : sig ... end
Building a Preface_specs.Indexed_alt
module Indexed_apply : sig ... end
Building a Preface_specs
.INDEXED_APPLY
module Indexed_applicative : sig ... end
Building a Preface_specs.Indexed_applicative
module Indexed_alternative : sig ... end
Building a Preface_specs.Indexed_alternative
module Indexed_selective : sig ... end
Building a Preface_specs.Indexed_selective
module Indexed_bind : sig ... end
Building a Preface_specs.Indexed_bind
module Indexed_monad : sig ... end
Building a Preface_specs.Indexed_monad
module Indexed_monad_plus : sig ... end
Building a Preface_specs.Indexed_monad_plus
module Indexed_comonad : sig ... end
Building an Preface_specs.Indexed_comonad
module Indexed_foldable : sig ... end
Building an Preface_specs
.INDEXED_FOLDABLE
module Invariant : sig ... end
Building a Preface_specs.Invariant
module Functor : sig ... end
Building a Preface_specs.Functor
module Alt : sig ... end
Building a Preface_specs.Alt
module Apply : sig ... end
Building a Preface_specs
.APPLY
module Applicative : sig ... end
Building a Preface_specs.Applicative
module Alternative : sig ... end
Building a Preface_specs.Alternative
module Selective : sig ... end
Building a Preface_specs.Selective
module Bind : sig ... end
Building a Preface_specs.Bind
module Monad : sig ... end
Building a Preface_specs.Monad
module Monad_plus : sig ... end
Building a Preface_specs.Monad_plus
module Comonad : sig ... end
Building a Preface_specs.Comonad
module Foldable : sig ... end
Building a Preface_specs.Foldable
module Traversable : sig ... end
Building a Preface_specs.Traversable
module Contravariant : sig ... end
Building a Preface_specs.Contravariant
module Divisible : sig ... end
Building a Preface_specs.Divisible
module Decidable : sig ... end
Building a Preface_specs.Decidable
module Bifunctor : sig ... end
Building a Preface_specs.Bifunctor
module Profunctor : sig ... end
Building a Preface_specs.Profunctor
module Strong : sig ... end
Building a Preface_specs.Strong
module Choice : sig ... end
Building a Preface_specs.Choice
module Closed : sig ... end
Building a Preface_specs.Closed
module Semigroupoid : sig ... end
Building a Preface_specs.Semigroupoid
module Category : sig ... end
Building a Preface_specs.Category
module Arrow : sig ... end
Building a Preface_specs.Arrow
module Arrow_zero : sig ... end
Building a Preface_specs.Arrow_zero
module Arrow_alt : sig ... end
Building a Preface_specs.Arrow_alt
module Arrow_plus : sig ... end
Building a Preface_specs.Arrow_plus
module Arrow_choice : sig ... end
Building a Preface_specs.Arrow_choice
module Arrow_apply : sig ... end
Building a Preface_specs.Arrow_apply
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
.
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
.
module Free_applicative : sig ... end
Building a Preface_specs.Free_applicative
module Free_selective : sig ... end
Building a Preface_specs.Free_selective
module Freer_selective : sig ... end
Building a Preface_specs.Freer_selective
module Free_monad : sig ... end
Building a Preface_specs.Free_monad
module Freer_monad : sig ... end
Building a Preface_specs.Freer_monad
Produces abstractions based on other abstractions (e.g. bifunctors from functors). Mainly for dealing with different arities.
module Join : sig ... end
Join
produces a Functor
from a Bifunctor
using both arguments of a Bifunctor.
module Clown : sig ... end
Clown
can produces Bifunctor
or Profunctor
using a Functor
(or a Contravariant
) on the first argument of the Bi/Profunctor
as described in Clowns to the Left, Jokers to the Right (Functional Pearl)
module Joker : sig ... end
Joker
can produces Bifunctor
or Profunctor
using a Functor
on the second argument of the Bi/Profunctor
as described in Clowns to the Left, Jokers to the Right (Functional Pearl)
module Kleisli : sig ... end
Kleisli
uses the Kleisli category to describe arity 2 constructions for arity 1 constructions, usually using the form: type ('a, 'b) t = 'a -> F.t
.
module Cokleisli : sig ... end
Cokleisli
uses the Cokleisli category to describe arity 2 constructions for arity 1 constructions, usually using the form: type ('a, 'b) t = 'a F.t -> 'b
.