Module type Arrow_choice.WITH_ARROW_AND_FST_AND_CHOOSE

Minimal definition using arrow and fst and choose.

type ('a, 'b) t

The type held by the Arrow_choice.

val choose : ('a, 'b) t -> ('c, 'd) t -> (('a, 'c) Stdlib.Either.t, ('b, 'd) Stdlib.Either.t) t

Split the input between the two argument arrows, re-tagging and merging their outputs.

val arrow : ('a -> 'b) -> ('a, 'b) t

Lift a function to an Arrow.

val fst : ('a, 'b) t -> ('a * 'd, 'b * 'd) t

Send the first component of the input through the argument Arrow, and copy the rest unchanged to the output.