Module Preface_make.Category

Building a Preface_specs.Category

Using the minimal definition

Using id and compose

Build a Preface_specs.CATEGORY using Preface_specs.Category.WITH_ID_AND_COMPOSE.

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

Using a Semigroupoid and id

Build a Preface_specs.CATEGORY over Preface_specs.Semigroupoid.CORE using Preface_specs.Category.WITH_ID.

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

module Over_semigroupoid (G : Preface_specs.Semigroupoid.CORE) (Req : Preface_specs.Category.WITH_ID with type ('a, 'b) t = ('a, 'b) G.t) : Preface_specs.CATEGORY with type ('a, 'b) t = ('a, 'b) Req.t

Category Algebra

Construction of Preface_specs.CATEGORY by combining them.

Product

Construct the product of two Preface_specs.CATEGORY.

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

From other abstraction

From a Monad

Produces a Preface_specs.CATEGORY from a Preface_specs.MONAD.

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

Manual construction

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

Grouping of all components

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

Building Core

Deriving Operation

Deriving Infix

module Infix (Core : Preface_specs.Category.CORE) : Preface_specs.Category.INFIX with type ('a, 'b) t = ('a, 'b) Core.t