Module Preface_make.Bifunctor

Building a Preface_specs.Bifunctor

Using the minimal definition

Using bimap

Build a Preface_specs.BIFUNCTOR using Preface_specs.Bifunctor.WITH_BIMAP.

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

Using map_fst and map_snd

Build a Preface_specs.BIFUNCTOR using Preface_specs.Bifunctor.WITH_MAP_FST_AND_MAP_SND.

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

From the product of two functors

Build a Preface_specs.BIFUNCTOR using the product of two Preface_specs.FUNCTOR.

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

From the sum of two functors

Build a Preface_specs.BIFUNCTOR using the sum of two Preface_specs.FUNCTOR using the technique described in Data types à la carte by W. Swierstra.

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

Bifunctor Algebra

Construction of Preface_specs.BIFUNCTOR by combining them.

Product

Construct the product of two Preface_specs.BIFUNCTOR.

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

Sum

Sum of Preface_specs.BIFUNCTOR using the technique described in Data types à la carte by W. Swierstra.

From a functor

Produces a Preface_specs.BIFUNCTOR from a Preface_specs.FUNCTOR. (Using Clown)

Manual construction

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

Grouping of all components

module Via (Core : Preface_specs.Bifunctor.CORE) (Operation : Preface_specs.Bifunctor.OPERATION with type ('a, 'b) t = ('a, 'b) Core.t) : Preface_specs.BIFUNCTOR with type ('a, 'b) t = ('a, 'b) Core.t

Building Core

Deriving Operation