Hyperlinkv0.8.0-beta.28

Channel

Channel.transformPullconsteffect/Channel.ts:322
<
  OutElem,
  OutErr,
  OutDone,
  InElem,
  InErr,
  InDone,
  Env,
  OutElem2,
  OutErr2,
  OutDone2,
  Env2,
  OutErrX,
  EnvX
>(
  self: Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>,
  f: (
    pull: Pull.Pull<OutElem, OutErr, OutDone>,
    scope: Scope.Scope
  ) => Effect.Effect<
    Pull.Pull<OutElem2, OutErr2, OutDone2, Env2>,
    OutErrX,
    EnvX
  >
): Channel<
  OutElem2,
  Pull.ExcludeDone<OutErr2> | OutErrX,
  OutDone2,
  InElem,
  InErr,
  InDone,
  Env | Env2 | EnvX
>

Transforms a Channel by applying a function to its Pull implementation.

Example (Transforming pull behavior)

import { Channel, Effect } from "effect"

// Transform a channel by modifying its pull behavior
const originalChannel = Channel.fromIterable([1, 2, 3])

const transformedChannel = Channel.transformPull(
  originalChannel,
  (pull, scope) =>
    Effect.succeed(
      Effect.map(pull, (value) => value * 2)
    )
)
// Outputs: 2, 4, 6
constructors
Source effect/Channel.ts:32229 lines
export const transformPull = <
  OutElem,
  OutErr,
  OutDone,
  InElem,
  InErr,
  InDone,
  Env,
  OutElem2,
  OutErr2,
  OutDone2,
  Env2,
  OutErrX,
  EnvX
>(
  self: Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>,
  f: (
    pull: Pull.Pull<OutElem, OutErr, OutDone>,
    scope: Scope.Scope
  ) => Effect.Effect<Pull.Pull<OutElem2, OutErr2, OutDone2, Env2>, OutErrX, EnvX>
): Channel<
  OutElem2,
  Pull.ExcludeDone<OutErr2> | OutErrX,
  OutDone2,
  InElem,
  InErr,
  InDone,
  Env | Env2 | EnvX
> => fromTransform((upstream, scope) => Effect.flatMap(toTransform(self)(upstream, scope), (pull) => f(pull, scope)))
Referenced by 12 symbols