An opinionated library for function programming (à La Haskell)


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

  1. All Arrow laws
  2. combine (combine a b) c = combine a (combine b c)

Minimal definition

module type WITH_COMBINE = sig ... end

Exposes the combine function, mandatory for each requirement.

module type WITH_ARROW_AND_FST = sig ... end

Minimal definition using arrow, fst and combine.

module type WITH_ARROW_AND_SPLIT = sig ... end

Minimal definition using arrow, split and combine.

Structure anatomy

module type CORE = sig ... end

Basis operations.

module type OPERATION = sig ... end

Additional operations.

module type ALIAS = Arrow.ALIAS

Aliases of some operations functions.

module type INFIX = sig ... end

Infix operators.

Complete API

module type API = sig ... end

The complete interface of an Arrow_alt.

Additional references