Preface_make.KleisliKleisli uses the Kleisli category to describe arity 2 constructions for arity 1 constructions, usually using the form: type ('a, 'b) t = 'a -> F.t.
Produces a Preface_specs.PROFUNCTOR from a Preface_specs.FUNCTOR.
module Profunctor
(Functor : Preface_specs.Functor.CORE) :
Preface_specs.PROFUNCTOR with type ('a, 'b) t = 'a -> 'b Functor.tProduces a Preface_specs.CHOICE from a Preface_specs.APPLICATIVE.
module Choice
(Applicative : Preface_specs.Applicative.CORE) :
Preface_specs.CHOICE with type ('a, 'b) t = 'a -> 'b Applicative.tProduces 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.tProduces 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.tProduces 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.tProduces an Preface_specs.ARROW_ZERO from a Preface_specs.MONAD_PLUS (using the Kleisli Arrow).
module Arrow_zero
(Monad : Preface_specs.Monad_plus.CORE) :
Preface_specs.ARROW_ZERO with type ('a, 'b) t = 'a -> 'b Monad.tProduces an Preface_specs.ARROW_ALT from a Preface_specs.MONAD_PLUSD (using the Kleisli Arrow).
module Arrow_alt
(Monad : Preface_specs.Monad_plus.CORE) :
Preface_specs.ARROW_ALT with type ('a, 'b) t = 'a -> 'b Monad.tProduces an Preface_specs.ARROW_PLUS from a Preface_specs.MONAD_PLUS (using the Kleisli Arrow).
module Arrow_plus
(Monad : Preface_specs.Monad_plus.CORE) :
Preface_specs.ARROW_PLUS with type ('a, 'b) t = 'a -> 'b Monad.tProduces an Preface_specs.ARROW_CHOICE from a Preface_specs.MONAD (using the Kleisli Arrow).
module Arrow_choice
(Monad : Preface_specs.Monad.CORE) :
Preface_specs.ARROW_CHOICE with type ('a, 'b) t = 'a -> 'b Monad.t