Non-deterministic interleave of both streams.
Non-deterministic interleave of both streams. Emits values whenever either is defined. Note this terminates after BOTH sides terminate
Non-deterministic interleave of both streams.
Non-deterministic interleave of both streams. Emits values whenever either is defined. Note this terminates after BOTH sides terminate
Like tee
, but we allow the Wye
to read non-deterministically
from both sides at once.
Like tee
, but we allow the Wye
to read non-deterministically
from both sides at once.
If y
is in the state of awaiting Both
, this implementation
will continue feeding y
from either left or right side,
until either it halts or _both_ sides halt.
If y
is in the state of awaiting L
, and the left
input has halted, we halt. Likewise for the right side.
For as long as y
permits it, this implementation will _always_
feed it any leading Emit
elements from either side before issuing
new F
requests. More sophisticated chunking and fairness
policies do not belong here, but should be built into the Wye
and/or its inputs.
The strategy passed in must be stack-safe, otherwise this implementation
will throw SOE. Preferably use one of the Strategys.Executor(es)
based strategies
Non-deterministic version of zip
.
Non-deterministic version of zip
. Note this terminates whenever one of streams terminate
Non-deterministic version of zipWith
.
Non-deterministic version of zipWith
. Note this terminates whenever one of streams terminate