Hyperlinkv0.8.0-beta.28

Stream

Stream.whenconsteffect/Stream.ts:4724
<EX = never, RX = never>(test: Effect.Effect<boolean, EX, RX>): <A, E, R>(
  self: Stream<A, E, R>
) => Stream<A, E | EX, R | RX>
<A, E, R, EX = never, RX = never>(
  self: Stream<A, E, R>,
  test: Effect.Effect<boolean, EX, RX>
): Stream<A, E | EX, R | RX>

Returns the specified stream if the given condition is satisfied, otherwise returns an empty stream.

Example (Conditionally keeping a stream)

import { Console, Effect, Stream } from "effect"

const program = Effect.gen(function*() {
  const result = yield* Stream.runCollect(
    Stream.when(Stream.make(1, 2, 3), Effect.succeed(false))
  )
  yield* Console.log(result)
})

Effect.runPromise(program)
// Output: []
filtering
Source effect/Stream.ts:472416 lines
export const when: {
  <EX = never, RX = never>(
    test: Effect.Effect<boolean, EX, RX>
  ): <A, E, R>(self: Stream<A, E, R>) => Stream<A, E | EX, R | RX>
  <A, E, R, EX = never, RX = never>(
    self: Stream<A, E, R>,
    test: Effect.Effect<boolean, EX, RX>
  ): Stream<A, E | EX, R | RX>
} = dual(2, <A, E, R, EX = never, RX = never>(
  self: Stream<A, E, R>,
  test: Effect.Effect<boolean, EX, RX>
): Stream<A, E | EX, R | RX> =>
  test.pipe(
    Effect.map((pass) => pass ? self : empty),
    unwrap
  ))