Module Generic.Arrow

val arr : ('input -> 'result) -> ('input'result__) t

arr is the same as pure.

val first : ('input'result'incr'event) t -> ('input * 'a'result * 'a'incr'event) t

first t applies t to the first part of the input.

val second : ('input'result'incr'event) t -> ('a * 'input'a * 'result'incr'event) t

second t applies t to the second part of the input.

val split : ('i1'r1'incr'event) t -> ('i2'r2'incr'event) t -> ('i1 * 'i2'r1 * 'r2'incr'event) t

split t u applies t to the first part of the input and u to the second part.

val (***) : ('i1'r1'incr'event) t -> ('i2'r2'incr'event) t -> ('i1 * 'i2'r1 * 'r2'incr'event) t

t *** u = split t u.

val fanout : ('input'r1'incr'event) t -> ('input'r2'incr'event) t -> ('input'r1 * 'r2'incr'event) t

fanout t u applies t and u to the same input and returns both results. It's actually just both.

val (&&&) : ('input'r1'incr'event) t -> ('input'r2'incr'event) t -> ('input'r1 * 'r2'incr'event) t

t &&& u = fanout t u.

val (^>>) : ('i1 -> 'i2) -> ('i2'result'incr'event) t -> ('i1'result'incr'event) t

^>> is the same as @>>, but with a Haskell-like name.

val (>>^) : ('input'r1'incr'event) t -> ('r1 -> 'r2) -> ('input'r2'incr'event) t

>>^ is the same as >>|, but with a Haskell-like name.

val partial_compose_first : ('input'shared * 'output1'incr'event) t -> ('input * 'shared'output2'incr'event) t -> ('input'output1 * 'output2'incr'event) t

Composes two components where one of the outputs of the first component is one of the inputs to the second.

val pipe : ('input'r1'incr'event) t -> into:('intermediate'r2'incr'event) t -> via:('input -> 'r1 -> 'intermediate) -> finalize:('input -> 'r1 -> 'r2 -> 'r3) -> ('input'r3'incr'event) t