Package: effect
Module: Stream
Creates a cartesian product of elements from two streams using a function.
Details
The right stream is rerun for every element in the left stream.
See also Stream.zipWith for the more common point-wise variant.
Example (Combining cartesian products)
import { Console, Effect, Stream } from "effect"
const program = Effect.gen(function*() {
const left = Stream.make(1, 2)
const right = Stream.make("a", "b")
const combined = Stream.crossWith(left, right, (n, s) => `${n}-${s}`)
const result = yield* Stream.runCollect(combined)
yield* Console.log(result)
})
Effect.runPromise(program)
// Output: [ "1-a", "1-b", "2-a", "2-b" ]
Signature
declare const crossWith: { <AR, ER, RR, AL, A>(right: Stream<AR, ER, RR>, f: (left: AL, right: AR) => A): <EL, RL>(left: Stream<AL, EL, RL>) => Stream<A, EL | ER, RL | RR>; <AL, EL, RL, AR, ER, RR, A>(left: Stream<AL, EL, RL>, right: Stream<AR, ER, RR>, f: (left: AL, right: AR) => A): Stream<A, EL | ER, RL | RR>; }
Since v2.0.0