Module Preface_make.Arrow

Building a Preface_specs.Arrow

Using the minimal definition

Using arrow and fst over a Category

Build an Preface_specs.ARROW using Preface_specs.Arrow.WITH_ARROW_AND_FST over a Preface_specs.CATEGORY.

Standard method, using the minimal definition of an alt to derive its full API.

Using arrow and split over a Category

Build an Preface_specs.ARROW using Preface_specs.Arrow.WITH_ARROW_AND_SPLIT over a Preface_specs.CATEGORY.

Standard method, using the minimal definition of an alt to derive its full API.

Arrow Algebra

Construction of Preface_specs.ARROW by combining them.

Product

Construct the product of two Preface_specs.ARROW.

module Product (F : Preface_specs.ARROW) (G : Preface_specs.ARROW) : Preface_specs.ARROW with type ('a, 'b) t = ('a, 'b) F.t * ('a, 'b) G.t

From other abstraction

From a Strong and a Category

Produces an Preface_specs.ARROW from a Preface_specs.STRONG and a Preface_specs.CATEGORY.

One way of looking at Arrow would be to see them as the conjunction of Category and Strong, as mentioned in Notions of Computation as Monoids by E. Rivas and M. Jaskelioff.

From a Monad

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

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

From an Arrow Plus

Produces an Preface_specs.ARROW from an Preface_specs.ARROW_PLUS.

module From_arrow_plus (Plus : Preface_specs.ARROW_PLUS) : Preface_specs.ARROW with type ('a, 'b) t = ('a, 'b) Plus.t

From an Arrow Alt

Produces an Preface_specs.ARROW from an Preface_specs.ARROW_ALT.

module From_arrow_alt (Alt : Preface_specs.ARROW_ALT) : Preface_specs.ARROW with type ('a, 'b) t = ('a, 'b) Alt.t

From an Arrow Zero

Produces an Preface_specs.ARROW from an Preface_specs.ARROW_ZERO.

module From_arrow_zero (Zero : Preface_specs.ARROW_ZERO) : Preface_specs.ARROW with type ('a, 'b) t = ('a, 'b) Zero.t

From an Arrow Choice

Produces an Preface_specs.ARROW from an Preface_specs.ARROW_CHOICE.

From an Arrow Apply

Produces an Preface_specs.ARROW from an Preface_specs.ARROW_APPLY.

Manual construction

Advanced way to build an Preface_specs.ARROW, constructing and assembling a component-by-component of Preface_specs.ARROW. (In order to provide your own implementation for some features.)

Grouping of all components

module Via (Core : Preface_specs.Arrow.CORE) (Operation : Preface_specs.Arrow.OPERATION with type ('a, 'b) t = ('a, 'b) Core.t) (Alias : Preface_specs.Arrow.ALIAS with type ('a, 'b) t = ('a, 'b) Operation.t) (Infix : Preface_specs.Arrow.INFIX with type ('a, 'b) t = ('a, 'b) Alias.t) : Preface_specs.ARROW with type ('a, 'b) t = ('a, 'b) Infix.t

Building Core

Deriving Operation

Deriving Alias

Deriving Infix

module Infix_over_category (Category : Preface_specs.Category.INFIX) (Core : Preface_specs.Arrow.CORE with type ('a, 'b) t = ('a, 'b) Category.t) (Operation : Preface_specs.Arrow.OPERATION with type ('a, 'b) t = ('a, 'b) Core.t) : Preface_specs.Arrow.INFIX with type ('a, 'b) t = ('a, 'b) Operation.t