Preface_make.Env
Building a Preface_specs.Env
, an Env transformer
.
Build an Preface_specs.ENV
over an Inner Preface_specs.COMONAD
.
module Over_comonad
(C : Preface_specs.COMONAD)
(Env : Preface_specs.Types.T0) :
Preface_specs.ENV with type env = Env.t and type 'a comonad = 'a C.t
If there are complementary implementations to Preface_specs.COMONAD
attached to the Inner Preface_specs.COMONAD
type, it is possible to promote the Preface_specs.ENV
API with these complementary implementations
If the Inner Preface_specs.COMONAD
is also a Preface_specs.FUNCTOR
, the Env comonad
is also a Preface_specs.FUNCTOR
.
module Functor
(F : Preface_specs.FUNCTOR)
(Env : Preface_specs.Types.T0) :
Preface_specs.FUNCTOR with type 'a t = Env.t * 'a F.t
If the Inner Preface_specs.COMONAD
is also an Preface_specs.APPLICATIVE
and the Env
is a Preface_specs.MONOID
, the Env comonad
is also a Preface_specs.APPLICATIVE
.
module Applicative
(A : Preface_specs.APPLICATIVE)
(Env : Preface_specs.MONOID) :
Preface_specs.APPLICATIVE with type 'a t = Env.t * 'a A.t
If the Inner Preface_specs.COMONAD
is also a Preface_specs.COMONAD
, the Env comonad
is also a Preface_specs.COMONAD
(this is this functor which is used in the full API definition).
module Comonad
(C : Preface_specs.COMONAD)
(Env : Preface_specs.Types.T0) :
Preface_specs.COMONAD with type 'a t = Env.t * 'a C.t
Advanced way to build an Preface_specs.ENV
, constructing and assembling a component-by-component of Preface_specs.ENV
. (In order to provide your own implementation for some features.)
module Core_over_comonad
(C : Preface_specs.COMONAD)
(Env : Preface_specs.Types.T0) :
Preface_specs.Env.CORE with type env = Env.t and type 'a comonad = 'a C.t