| 3528 | <AR, ER, RR>(right: Stream<AR, ER, RR>): <AL, EL, RL>(left: Stream<AL, EL, RL>) => Stream<AR, ER | EL, RR | RL> |
| 3529 | <AL, EL, RL, AR, ER, RR>(left: Stream<AL, EL, RL>, right: Stream<AR, ER, RR>): Stream<AR, EL | ER, RL | RR> |
| 3530 | } = dual( |
| 3531 | 2, |
| 3532 | <AL, EL, RL, AR, ER, RR>( |
| 3533 | left: Stream<AL, EL, RL>, |
| 3534 | right: Stream<AR, ER, RR> |
| 3535 | ): Stream<AR, EL | ER, RL | RR> => |
| 3536 | zipWithArray(left, right, (leftArr, rightArr) => { |
| 3537 | const minLength = Math.min(leftArr.length, rightArr.length) |
| 3538 | const output = rightArr.slice(0, minLength) as Arr.NonEmptyArray<AR> |
| 3539 | const leftoverLeft = leftArr.slice(minLength) |
| 3540 | const leftoverRight = rightArr.slice(minLength) |
| 3541 | |
| 3542 | return [output, leftoverLeft, leftoverRight] as const |
| 3543 | }) |
| 3544 | ) |
| 3545 | |
| 3546 | /** |
| 3547 | * Zips this stream with another point-wise and emits tuples of elements from |
| 3548 | * both streams, flattening the left tuple. |