Preface_specs.Arrow_applyAn Arrow_apply is an Arrow with application capabilities. An Arrow_apply is also Arrow.
To have a predictable behaviour, the instance of Arrow_apply must obey some laws.
Arrow lawsfst (arrow (fun x -> arrow (fun y -> (x,y)))) >>> apply = idfst (arrow (fun x -> g >>> x)) >>> apply = snd g >>> applyfst (arrow (fun x -> x >>> h)) >>> apply = apply >>> hmodule type WITH_APPLY = sig ... endMinimal definition using apply operation, without Arrow.
module type WITH_ARROW_AND_FST = sig ... endMinimal definition using arrow and fst and apply.
module type WITH_ARROW_AND_SPLIT = sig ... endMinimal definition using arrow and fst and apply.
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_apply.