Preface_specs.Arrow_choice
An Arrow_choice
is an Arrow
with conditional capabilities. It is a kind of Selective
in the arrow hierarchy. And an Arrow_choice
is also Arrow
.
To have a predictable behaviour, the instance of Arrow_choice
must obey some laws.
Arrow
lawsleft (arrow f) = arrow (f ++ id)
left (f >>> g) = left f >>> left g
f >>> arr Left = arr Left >>> left f
left f >>> arrow (Fun.id +++ g) = arrow (Fun.id +++ g) >>> left f
left (left f) >>> arrow assocsum = arrow assocsum >>> left f
module type WITH_CHOOSE = sig ... end
Minimal definition using choose
operation without Arrow
.
module type WITH_LEFT_AND_CHOOSE = sig ... end
Minimal definition using choose
and left
without Arrow
.
module type WITH_ARROW_AND_FST_AND_CHOOSE = sig ... end
Minimal definition using arrow
and fst
and choose
.
module type WITH_ARROW_AND_FST_AND_LEFT = sig ... end
Minimal definition using arrow
and fst
and left
.
module type WITH_ARROW_AND_SPLIT_AND_CHOOSE = sig ... end
Minimal definition using arrow
and fst
and choose
.
module type WITH_ARROW_AND_SPLIT_AND_LEFT = sig ... end
Minimal definition using arrow
and fst
and left
.
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.
module type API = sig ... end
The complete interface of an Arrow_choice
.