Module type Arrow_plus.WITH_ARROW_AND_SPLIT

Minimal definition using arrow, split, neutral and combine.

type ('a, 'b) t

The type held by the Arrow_zero.

val neutral : ('a, 'b) t

The neutral element of the Arrow_zero.

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

Combine two values of ('a, 'b) t into one.

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

Lift a function to an Arrow.

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

Split the input between the two given Arrows and combine their output.