Module Preface_make.Kleisli

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.

Profunctor from a Functor

Produces a Preface_specs.PROFUNCTOR from a Preface_specs.FUNCTOR.

Choice From an Applicative

Produces a Preface_specs.CHOICE from a Preface_specs.APPLICATIVE.

Strong from a Monad

Produces a Preface_specs.STRONG from a Preface_specs.MONAD. (Using Star)

module Strong (Monad : Preface_specs.Monad.CORE) : Preface_specs.STRONG with type ('a, 'b) t = 'a -> 'b Monad.t

Category from a Monad

Produces a Preface_specs.CATEGORY from a Preface_specs.MONAD.

module Category (Monad : Preface_specs.Monad.CORE) : Preface_specs.CATEGORY with type ('a, 'b) t = 'a -> 'b Monad.t

Arrow from a Monad

Produces an Preface_specs.ARROW from a Preface_specs.MONAD (using the Kleisli Arrow).

module Arrow (Monad : Preface_specs.Monad.CORE) : Preface_specs.ARROW with type ('a, 'b) t = 'a -> 'b Monad.t

Arrow zero from a Monad Plus

Produces an Preface_specs.ARROW_ZERO from a Preface_specs.MONAD_PLUS (using the Kleisli Arrow).

Arrow alt from a Monad Plus

Produces an Preface_specs.ARROW_ALT from a Preface_specs.MONAD_PLUSD (using the Kleisli Arrow).

Arrow plus from a Monad Plus

Produces an Preface_specs.ARROW_PLUS from a Preface_specs.MONAD_PLUS (using the Kleisli Arrow).

Arrow Choice from a Monad

Produces an Preface_specs.ARROW_CHOICE from a Preface_specs.MONAD (using the Kleisli Arrow).