Preface_specs.Arrow_zeroAn Arrow with a neutral element. So Arrow_zero is also an Arrow.
To have a predictable behaviour, the instance of Arrow_zero must obey some laws.
Arrow lawsmodule type WITH_NEUTRAL = sig ... endExposes the neutral value, mandatory for each requirement.
module type WITH_ARROW_AND_FST = sig ... endMinimal definition using arrow, fst and neutral.
module type WITH_ARROW_AND_SPLIT = sig ... endMinimal definition using arrow, split and neutral.
module type CORE = sig ... endBasis operations.
module type OPERATION = Arrow.OPERATIONAdditional operations.
module type ALIAS = Arrow.ALIASAliases of some operations functions.
module type INFIX = Arrow.INFIXInfix operators.
module type API = sig ... endThe complete interface of an Arrow_zero.