Package: effect
Module: Channel
Runs a channel and folds over all output elements with an accumulator.
Example (Folding channel output)
import { Channel, Data } from "effect"
class FoldError extends Data.TaggedError("FoldError")<{
readonly operation: string
}> {}
// Create a channel with numbers
const numbersChannel = Channel.fromIterable([1, 2, 3, 4, 5])
// Fold to calculate sum
const sumEffect = Channel.runFold(numbersChannel, () => 0, (acc, n) => acc + n)
// Effect.runSync(sumEffect) // Returns: 15
Signature
declare const runFold: { <Z, OutElem>(initial: LazyArg<Z>, f: (acc: Z, o: OutElem) => Z): <OutErr, OutDone, Env>(self: Channel<OutElem, OutErr, OutDone, unknown, unknown, unknown, Env>) => Effect.Effect<Z, OutErr, Env>; <OutElem, OutErr, OutDone, Env, Z>(self: Channel<OutElem, OutErr, OutDone, unknown, unknown, unknown, Env>, initial: LazyArg<Z>, f: (acc: Z, o: OutElem) => Z): Effect.Effect<Z, OutErr, Env>; }
Since v4.0.0