package preface
Module Preface_make.Arrow_zero
Building a Preface_specs.Arrow_zero
Using the minimal definition
Using neutral over an Arrow
Build an Preface_specs.ARROW_ZERO using Preface_specs.Arrow_zero.WITH_NEUTRAL over an Preface_specs.ARROW.
Standard method, using the minimal definition of an alt to derive its full API.
module Over_arrow
(Arrow : Preface_specs.ARROW)
(Req :
Preface_specs.Arrow_zero.WITH_NEUTRAL
with type ('a, 'b) t = ('a, 'b) Arrow.t) :
Preface_specs.ARROW_ZERO with type ('a, 'b) t = ('a, 'b) Req.tUsing neutral, arrow and fst over a Category
Build an Preface_specs.ARROW_ZERO using Preface_specs.Arrow_zero.WITH_ARROW_AND_FST over a Preface_specs.CATEGORY.
Standard method, using the minimal definition of an alt to derive its full API.
module Over_category_and_via_arrow_and_fst
(Category : Preface_specs.CATEGORY)
(Req :
Preface_specs.Arrow_zero.WITH_ARROW_AND_FST
with type ('a, 'b) t = ('a, 'b) Category.t) :
Preface_specs.ARROW_ZERO with type ('a, 'b) t = ('a, 'b) Req.tUsing neutral, arrow and split over a Category
Build an Preface_specs.ARROW_ZERO using Preface_specs.Arrow_zero.WITH_ARROW_AND_SPLIT over a Preface_specs.CATEGORY.
Standard method, using the minimal definition of an alt to derive its full API.
module Over_category_and_via_arrow_and_split
(Category : Preface_specs.CATEGORY)
(Req :
Preface_specs.Arrow_zero.WITH_ARROW_AND_SPLIT
with type ('a, 'b) t = ('a, 'b) Category.t) :
Preface_specs.ARROW_ZERO with type ('a, 'b) t = ('a, 'b) Req.tArrow Zero Algebra
Construction of Preface_specs.ARROW_ZERO by combining them.
Product
Construct the product of two Preface_specs.ARROW_ZERO.
module Product
(F : Preface_specs.ARROW_ZERO)
(G : Preface_specs.ARROW_ZERO) :
Preface_specs.ARROW_ZERO with type ('a, 'b) t = ('a, 'b) F.t * ('a, 'b) G.tFrom other abstraction
From an Arrow Plus
Produces an Preface_specs.ARROW_ZERO from an Preface_specs.ARROW_PLUS.
module From_arrow_plus
(Plus : Preface_specs.ARROW_PLUS) :
Preface_specs.ARROW_ZERO with type ('a, 'b) t = ('a, 'b) Plus.tFrom a Monad Plus
Produces an Preface_specs.ARROW_ZERO from a Preface_specs.MONAD_PLUS (using the Kleisli Arrow).
module From_monad_plus
(Monad : Preface_specs.Monad_plus.CORE) :
Preface_specs.ARROW_ZERO with type ('a, 'b) t = 'a -> 'b Monad.tManual construction
Advanced way to build an Preface_specs.ARROW_ZERO, constructing and assembling a component-by-component of Preface_specs.ARROW_ZERO. (In order to provide your own implementation for some features.)
Grouping of all components
module Via
(Core : Preface_specs.Arrow_zero.CORE)
(Operation :
Preface_specs.Arrow_zero.OPERATION with type ('a, 'b) t = ('a, 'b) Core.t)
(Alias :
Preface_specs.Arrow_zero.ALIAS with type ('a, 'b) t = ('a, 'b) Operation.t)
(Infix :
Preface_specs.Arrow_zero.INFIX with type ('a, 'b) t = ('a, 'b) Alias.t) :
Preface_specs.ARROW_ZERO with type ('a, 'b) t = ('a, 'b) Infix.tBuilding Core
module Core_over_category_and_via_arrow_and_fst
(Category : Preface_specs.Category.CORE)
(Req :
Preface_specs.Arrow_zero.WITH_ARROW_AND_FST
with type ('a, 'b) t = ('a, 'b) Category.t) :
Preface_specs.Arrow_zero.CORE with type ('a, 'b) t = ('a, 'b) Req.tmodule Core_over_category_and_via_arrow_and_split
(Category : Preface_specs.Category.CORE)
(Req :
Preface_specs.Arrow_zero.WITH_ARROW_AND_SPLIT
with type ('a, 'b) t = ('a, 'b) Category.t) :
Preface_specs.Arrow_zero.CORE with type ('a, 'b) t = ('a, 'b) Req.tDeriving Operation
module Operation_over_category
(Category : Preface_specs.Category.OPERATION)
(Core :
Preface_specs.Arrow_zero.CORE with type ('a, 'b) t = ('a, 'b) Category.t) :
Preface_specs.Arrow_zero.OPERATION with type ('a, 'b) t = ('a, 'b) Core.tDeriving Alias
module Alias
(Operation : Preface_specs.Arrow_zero.OPERATION) :
Preface_specs.Arrow_zero.ALIAS with type ('a, 'b) t = ('a, 'b) Operation.tDeriving Infix
module Infix_over_category
(Category : Preface_specs.Category.INFIX)
(Core :
Preface_specs.Arrow_zero.CORE with type ('a, 'b) t = ('a, 'b) Category.t)
(Operation :
Preface_specs.Arrow_zero.OPERATION with type ('a, 'b) t = ('a, 'b) Core.t) :
Preface_specs.Arrow_zero.INFIX with type ('a, 'b) t = ('a, 'b) Operation.t