<A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>
readonly onDone: (leftover: L) => Effect<AH, EH, RH>
}): <R>(
self: Pull<A, E, L, R>
) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
<A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(
self: Pull<A, E, L, R>,
options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>
readonly onDone: (leftover: L) => Effect<AH, EH, RH>
}
): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>Pattern matches on a Pull, handling success, failure, and done cases.
When to use
Use to handle all three Pull outcomes with effectful handlers.
Example (Matching Pull outcomes)
import { Cause, Effect, Pull } from "effect"
const pull = Cause.done("stream ended")
const result = Pull.matchEffect(pull, {
onSuccess: (value) => Effect.succeed(`Got value: ${value}`),
onFailure: (cause) => Effect.succeed(`Got error: ${cause}`),
onDone: (leftover) => Effect.succeed(`Stream halted with: ${leftover}`)
})export const const matchEffect: {
<
A,
E,
L,
AS,
ES,
RS,
AF,
EF,
RF,
AH,
EH,
RH
>(options: {
readonly onSuccess: (
value: A
) => Effect<AS, ES, RS>
readonly onFailure: (
failure: Cause.Cause<E>
) => Effect<AF, EF, RF>
readonly onDone: (
leftover: L
) => Effect<AH, EH, RH>
}): <R>(
self: Pull<A, E, L, R>
) => Effect<
AS | AF | AH,
ES | EF | EH,
R | RS | RF | RH
>
<
A,
E,
L,
R,
AS,
ES,
RS,
AF,
EF,
RF,
AH,
EH,
RH
>(
self: Pull<A, E, L, R>,
options: {
readonly onSuccess: (
value: A
) => Effect<AS, ES, RS>
readonly onFailure: (
failure: Cause.Cause<E>
) => Effect<AF, EF, RF>
readonly onDone: (
leftover: L
) => Effect<AH, EH, RH>
}
): Effect<
AS | AF | AH,
ES | EF | EH,
R | RS | RF | RH
>
}
Pattern matches on a Pull, handling success, failure, and done cases.
When to use
Use to handle all three Pull outcomes with effectful handlers.
Example (Matching Pull outcomes)
import { Cause, Effect, Pull } from "effect"
const pull = Cause.done("stream ended")
const result = Pull.matchEffect(pull, {
onSuccess: (value) => Effect.succeed(`Got value: ${value}`),
onFailure: (cause) => Effect.succeed(`Got error: ${cause}`),
onDone: (leftover) => Effect.succeed(`Stream halted with: ${leftover}`)
})
matchEffect: {
<function (type parameter) A in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
A, function (type parameter) E in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
E, function (type parameter) L in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
L, function (type parameter) AS in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
AS, function (type parameter) ES in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
ES, function (type parameter) RS in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
RS, function (type parameter) AF in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
AF, function (type parameter) EF in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
EF, function (type parameter) RF in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
RF, function (type parameter) AH in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
AH, function (type parameter) EH in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
EH, function (type parameter) RH in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
RH>(options: {
readonly onSuccess: (
value: A
) => Effect<AS, ES, RS>
readonly onFailure: (
failure: Cause.Cause<E>
) => Effect<AF, EF, RF>
readonly onDone: (
leftover: L
) => Effect<AH, EH, RH>
}
options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>onSuccess: (value: Avalue: function (type parameter) A in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
A) => import EffectEffect<function (type parameter) AS in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
AS, function (type parameter) ES in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
ES, function (type parameter) RS in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
RS>
readonly onFailure: (
failure: Cause.Cause<E>
) => Effect<AF, EF, RF>
onFailure: (failure: Cause.Cause<E>(parameter) failure: {
reasons: ReadonlyArray<Reason<E>>;
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
toString: () => string;
toJSON: () => unknown;
}
failure: import CauseCause.type Cause.Cause = /*unresolved*/ anyCause<function (type parameter) E in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
E>) => import EffectEffect<function (type parameter) AF in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
AF, function (type parameter) EF in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
EF, function (type parameter) RF in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
RF>
readonly onDone: (leftover: L) => Effect<AH, EH, RH>onDone: (leftover: Lleftover: function (type parameter) L in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
L) => import EffectEffect<function (type parameter) AH in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
AH, function (type parameter) EH in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
EH, function (type parameter) RH in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
RH>
}): <function (type parameter) R in <R>(self: Pull<A, E, L, R>): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>R>(self: Pull<A, E, L, R>(parameter) self: {
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
toString: () => string;
toJSON: () => unknown;
}
self: interface Pull<out A, out E = never, out Done = void, out R = never>An effectful pull step that either produces a value, fails with E, or
signals completion with Cause.Done<Done>.
When to use
Use to model one low-level pull step when a consumer repeatedly evaluates an
effect that may emit a value, fail normally, or signal normal completion
through Cause.Done.
Details
Pull represents completion in the error channel so low-level stream
consumers can distinguish ordinary failures from end-of-input and carry a
leftover value when needed.
Pull<function (type parameter) A in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
A, function (type parameter) E in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
E, function (type parameter) L in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
L, function (type parameter) R in <R>(self: Pull<A, E, L, R>): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>R>) => import EffectEffect<function (type parameter) AS in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
AS | function (type parameter) AF in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
AF | function (type parameter) AH in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
AH, function (type parameter) ES in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
ES | function (type parameter) EF in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
EF | function (type parameter) EH in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
EH, function (type parameter) R in <R>(self: Pull<A, E, L, R>): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>R | function (type parameter) RS in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
RS | function (type parameter) RF in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
RF | function (type parameter) RH in <A, E, L, AS, ES, RS, AF, EF, RF, AH, EH, RH>(options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): <R>(self: Pull<A, E, L, R>) => Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
RH>
<function (type parameter) A in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
A, function (type parameter) E in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
E, function (type parameter) L in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
L, function (type parameter) R in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
R, function (type parameter) AS in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
AS, function (type parameter) ES in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
ES, function (type parameter) RS in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
RS, function (type parameter) AF in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
AF, function (type parameter) EF in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
EF, function (type parameter) RF in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
RF, function (type parameter) AH in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
AH, function (type parameter) EH in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
EH, function (type parameter) RH in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
RH>(self: Pull<A, E, L, R>(parameter) self: {
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
toString: () => string;
toJSON: () => unknown;
}
self: interface Pull<out A, out E = never, out Done = void, out R = never>An effectful pull step that either produces a value, fails with E, or
signals completion with Cause.Done<Done>.
When to use
Use to model one low-level pull step when a consumer repeatedly evaluates an
effect that may emit a value, fail normally, or signal normal completion
through Cause.Done.
Details
Pull represents completion in the error channel so low-level stream
consumers can distinguish ordinary failures from end-of-input and carry a
leftover value when needed.
Pull<function (type parameter) A in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
A, function (type parameter) E in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
E, function (type parameter) L in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
L, function (type parameter) R in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
R>, options: {
readonly onSuccess: (
value: A
) => Effect<AS, ES, RS>
readonly onFailure: (
failure: Cause.Cause<E>
) => Effect<AF, EF, RF>
readonly onDone: (
leftover: L
) => Effect<AH, EH, RH>
}
options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>onSuccess: (value: Avalue: function (type parameter) A in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
A) => import EffectEffect<function (type parameter) AS in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
AS, function (type parameter) ES in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
ES, function (type parameter) RS in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
RS>
readonly onFailure: (
failure: Cause.Cause<E>
) => Effect<AF, EF, RF>
onFailure: (failure: Cause.Cause<E>(parameter) failure: {
reasons: ReadonlyArray<Reason<E>>;
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
toString: () => string;
toJSON: () => unknown;
}
failure: import CauseCause.type Cause.Cause = /*unresolved*/ anyCause<function (type parameter) E in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
E>) => import EffectEffect<function (type parameter) AF in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
AF, function (type parameter) EF in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
EF, function (type parameter) RF in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
RF>
readonly onDone: (leftover: L) => Effect<AH, EH, RH>onDone: (leftover: Lleftover: function (type parameter) L in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
L) => import EffectEffect<function (type parameter) AH in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
AH, function (type parameter) EH in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
EH, function (type parameter) RH in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
RH>
}): import EffectEffect<function (type parameter) AS in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
AS | function (type parameter) AF in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
AF | function (type parameter) AH in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
AH, function (type parameter) ES in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
ES | function (type parameter) EF in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
EF | function (type parameter) EH in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
EH, function (type parameter) R in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
R | function (type parameter) RS in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
RS | function (type parameter) RF in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
RF | function (type parameter) RH in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
RH>
} = import dualdual(2, <function (type parameter) A in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
A, function (type parameter) E in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
E, function (type parameter) L in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
L, function (type parameter) R in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
R, function (type parameter) AS in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
AS, function (type parameter) ES in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
ES, function (type parameter) RS in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
RS, function (type parameter) AF in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
AF, function (type parameter) EF in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
EF, function (type parameter) RF in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
RF, function (type parameter) AH in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
AH, function (type parameter) EH in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
EH, function (type parameter) RH in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
RH>(self: Pull<A, E, L, R>(parameter) self: {
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
toString: () => string;
toJSON: () => unknown;
}
self: interface Pull<out A, out E = never, out Done = void, out R = never>An effectful pull step that either produces a value, fails with E, or
signals completion with Cause.Done<Done>.
When to use
Use to model one low-level pull step when a consumer repeatedly evaluates an
effect that may emit a value, fail normally, or signal normal completion
through Cause.Done.
Details
Pull represents completion in the error channel so low-level stream
consumers can distinguish ordinary failures from end-of-input and carry a
leftover value when needed.
Pull<function (type parameter) A in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
A, function (type parameter) E in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
E, function (type parameter) L in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
L, function (type parameter) R in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
R>, options: {
readonly onSuccess: (
value: A
) => Effect<AS, ES, RS>
readonly onFailure: (
failure: Cause.Cause<E>
) => Effect<AF, EF, RF>
readonly onDone: (
leftover: L
) => Effect<AH, EH, RH>
}
options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>onSuccess: (value: Avalue: function (type parameter) A in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
A) => import EffectEffect<function (type parameter) AS in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
AS, function (type parameter) ES in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
ES, function (type parameter) RS in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
RS>
readonly onFailure: (
failure: Cause.Cause<E>
) => Effect<AF, EF, RF>
onFailure: (failure: Cause.Cause<E>(parameter) failure: {
reasons: ReadonlyArray<Reason<E>>;
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
toString: () => string;
toJSON: () => unknown;
}
failure: import CauseCause.type Cause.Cause = /*unresolved*/ anyCause<function (type parameter) E in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
E>) => import EffectEffect<function (type parameter) AF in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
AF, function (type parameter) EF in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
EF, function (type parameter) RF in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
RF>
readonly onDone: (leftover: L) => Effect<AH, EH, RH>onDone: (leftover: Lleftover: function (type parameter) L in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
L) => import EffectEffect<function (type parameter) AH in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
AH, function (type parameter) EH in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
EH, function (type parameter) RH in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
RH>
}): import EffectEffect<function (type parameter) AS in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
AS | function (type parameter) AF in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
AF | function (type parameter) AH in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
AH, function (type parameter) ES in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
ES | function (type parameter) EF in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
EF | function (type parameter) EH in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
EH, function (type parameter) R in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
R | function (type parameter) RS in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
RS | function (type parameter) RF in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
RF | function (type parameter) RH in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
RH> =>
import internalEffectinternalEffect.const matchCauseEffect: {
<E, A2, E2, R2, A, A3, E3, R3>(options: {
readonly onFailure: (
cause: Cause.Cause<E>
) => Effect.Effect<A2, E2, R2>
readonly onSuccess: (
a: A
) => Effect.Effect<A3, E3, R3>
}): <R>(
self: Effect.Effect<A, E, R>
) => Effect.Effect<
A2 | A3,
E2 | E3,
R2 | R3 | R
>
<A, E, R, A2, E2, R2, A3, E3, R3>(
self: Effect.Effect<A, E, R>,
options: {
readonly onFailure: (
cause: Cause.Cause<E>
) => Effect.Effect<A2, E2, R2>
readonly onSuccess: (
a: A
) => Effect.Effect<A3, E3, R3>
}
): Effect.Effect<A2 | A3, E2 | E3, R2 | R3 | R>
}
matchCauseEffect(self: Pull<A, E, L, R>(parameter) self: {
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
toString: () => string;
toJSON: () => unknown;
}
self, {
onSuccess: (value: A) => Effect<AS, ES, RS>onSuccess: options: {
readonly onSuccess: (
value: A
) => Effect<AS, ES, RS>
readonly onFailure: (
failure: Cause.Cause<E>
) => Effect<AF, EF, RF>
readonly onDone: (
leftover: L
) => Effect<AH, EH, RH>
}
options.onSuccess: (value: A) => Effect<AS, ES, RS>onSuccess,
onFailure: (
cause: Cause.Cause<E | Cause.Done<L>>
) => Effect<
AS | AF | AH,
ES | EF | EH,
RS | RF | RH
>
onFailure: (cause: Cause.Cause<E | Cause.Done<L>>(parameter) cause: {
reasons: ReadonlyArray<Reason<E>>;
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
toString: () => string;
toJSON: () => unknown;
}
cause): import EffectEffect<function (type parameter) AS in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
AS | function (type parameter) AF in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
AF | function (type parameter) AH in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
AH, function (type parameter) ES in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
ES | function (type parameter) EF in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
EF | function (type parameter) EH in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
EH, function (type parameter) RS in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
RS | function (type parameter) RF in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
RF | function (type parameter) RH in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
RH> => {
const const halt: Result.Result<
Cause.Done<L> | Cause.Done.Only<E>,
Cause.Cause<Exclude<E, Cause.Done<any>>>
>
halt = const filterDone: <E>(
input: Cause.Cause<E>
) => Result.Result<
Cause.Done.Only<E>,
Cause.Cause<ExcludeDone<E>>
>
Finds a Cause.Done failure in a Cause.
When to use
Use to separate Cause.Done completion from ordinary causes while preserving
the typed done value.
Details
Returns a successful Result with the Cause.Done value when one is
present, otherwise returns a failed Result containing the non-done cause.
filterDone(cause: Cause.Cause<E | Cause.Done<L>>(parameter) cause: {
reasons: ReadonlyArray<Reason<E>>;
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
toString: () => string;
toJSON: () => unknown;
}
cause)
return !import ResultResult.const isFailure: <A, E>(
self: Result<A, E>
) => self is Failure<A, E>
Checks whether a Result is a Failure.
When to use
Use to narrow a known Result to the Failure variant.
Details
- Acts as a TypeScript type guard, narrowing to
Failure<A, E>
- After narrowing, you can access
.failure to read the error value
Example (Narrowing to failure)
import { Result } from "effect"
const result = Result.fail("oops")
if (Result.isFailure(result)) {
console.log(result.failure)
// Output: "oops"
}
isFailure(const halt: Result.Result<
Cause.Done<L> | Cause.Done.Only<E>,
Cause.Cause<Exclude<E, Cause.Done<any>>>
>
halt) ? options: {
readonly onSuccess: (
value: A
) => Effect<AS, ES, RS>
readonly onFailure: (
failure: Cause.Cause<E>
) => Effect<AF, EF, RF>
readonly onDone: (
leftover: L
) => Effect<AH, EH, RH>
}
options.onDone: (leftover: L) => Effect<AH, EH, RH>onDone(const halt: Result.Success<
Cause.Done<L> | Cause.Done.Only<E>,
Cause.Cause<Exclude<E, Cause.Done<any>>>
>
const halt: {
_tag: "Success";
_op: "Success";
success: A;
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
toString: () => string;
toJSON: () => unknown;
}
halt.Success<Cause.Done.Only<E>, Cause.Cause<Exclude<E, Cause.Done<any>>>>.success: Cause.Done.Only<E>success.value as function (type parameter) L in <A, E, L, R, AS, ES, RS, AF, EF, RF, AH, EH, RH>(self: Pull<A, E, L, R>, options: {
readonly onSuccess: (value: A) => Effect<AS, ES, RS>;
readonly onFailure: (failure: Cause.Cause<E>) => Effect<AF, EF, RF>;
readonly onDone: (leftover: L) => Effect<AH, EH, RH>;
}): Effect<AS | AF | AH, ES | EF | EH, R | RS | RF | RH>
L) : options: {
readonly onSuccess: (
value: A
) => Effect<AS, ES, RS>
readonly onFailure: (
failure: Cause.Cause<E>
) => Effect<AF, EF, RF>
readonly onDone: (
leftover: L
) => Effect<AH, EH, RH>
}
options.onFailure: (
failure: Cause.Cause<E>
) => Effect<AF, EF, RF>
onFailure(const halt: Result.Failure<
Cause.Done<L> | Cause.Done.Only<E>,
Cause.Cause<Exclude<E, Cause.Done<any>>>
>
const halt: {
_tag: "Failure";
_op: "Failure";
failure: E;
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
toString: () => string;
toJSON: () => unknown;
}
halt.Failure<Cause.Done.Only<E>, Cause.Cause<Exclude<E, Cause.Done<any>>>>.failure: Cause.Cause<Exclude<E, Cause.Done<any>>>(property) Failure<Cause.Done.Only<E>, Cause.Cause<Exclude<E, Cause.Done<any>>>>.failure: {
reasons: ReadonlyArray<Reason<E>>;
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
toString: () => string;
toJSON: () => unknown;
}
failure)
}
}))