Module Preface_make.Monad_plus

Building a Preface_specs.Monad_plus

Using the minimal definition

Using return, bind, neutral and combine

Build a Preface_specs.MONAD_PLUS using Preface_specs.Monad_plus.WITH_BIND.

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

Using return, map, join, neutral and combine

Build a Preface_specs.MONAD_PLUS using Preface_specs.Monad_plus.WITH_MAP_AND_JOIN.

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

Using return, neutral, combine and the kleisli composition

Build a Preface_specs.MONAD_PLUS using Preface_specs.Monad_plus.WITH_KLEISLI_COMPOSITION.

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

Over a Monad and an Alternative

Build a Preface_specs.MONAD_PLUS over a Preface_specs.MONAD and an neutral and combine from an Preface_specs.ALTERNATIVE.

Over a Monad using neutral and combine

Build a Preface_specs.MONAD_PLUS over a Preface_specs.MONAD and using Preface_specs.Monad_plus.WITH_NEUTRAL_AND_COMBINE.

Monad plus Algebra

Construction of Preface_specs.MONAD_PLUS by combining them.

Product

Construct the product of two Preface_specs.MONAD_PLUS.

From other abstraction

From an Arrow Plus and Arrow Apply

Produces an Preface_specs.MONAD_PLUS from an Arrow which has to be a Preface_specs.ARROW_PLUS and a Preface_specs.ARROW_APPLY.

module From_arrow_apply_and_arrow_plus (A : Preface_specs.ARROW_APPLY) (P : Preface_specs.ARROW_PLUS with type ('a, 'b) t = ('a, 'b) A.t) : Preface_specs.MONAD_PLUS with type 'a t = (unit, 'a) P.t

To other abstraction

To an Indexed Monad

module Index (F : Preface_specs.MONAD_PLUS) : Preface_specs.INDEXED_MONAD_PLUS with type ('a, 'index) t = 'a F.t

Manual construction

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

Grouping of all components

Building Core

Deriving Operation

Deriving Syntax

Deriving Infix