Module Preface_specs.Arrow_apply

An Arrow_apply is an Arrow with application capabilities. An Arrow_apply is also Arrow.

Laws

To have a predictable behaviour, the instance of Arrow_apply must obey some laws.

  1. All Arrow laws
  2. fst (arrow (fun x -> arrow (fun y -> (x,y)))) >>> apply = id
  3. fst (arrow (fun x -> g >>> x)) >>> apply = snd g >>> apply
  4. fst (arrow (fun x -> x >>> h)) >>> apply = apply >>> h

Minimal definition

module type WITH_APPLY = sig ... end

Minimal definition using apply operation, without Arrow.

module type WITH_ARROW_AND_FST = sig ... end

Minimal definition using arrow and fst and apply.

module type WITH_ARROW_AND_SPLIT = sig ... end

Minimal definition using arrow and fst and apply.

Structure anatomy

module type CORE = sig ... end

Basis operations.

module type OPERATION = Arrow.OPERATION

Additional operations.

module type ALIAS = Arrow.ALIAS

Aliases of some operations functions.

module type INFIX = Arrow.INFIX

Infix operators.

Complete API

module type API = sig ... end

The complete interface of an Arrow_apply.

Additional references