<Eff extends Effect<any, any, any>, AEff, Args extends Array<any>>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>
): (
...args: Args
) => Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>
<Self, Eff extends Effect<any, any, any>, AEff, Args extends Array<any>>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>
): (
this: Self,
...args: Args
) => Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>
<Eff extends Effect<any, any, any>, AEff, Args extends Array<any>, A>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A
): (...args: Args) => A
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A
): (this: Self, ...args: Args) => A
<Eff extends Effect<any, any, any>, AEff, Args extends Array<any>, A, B>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B
): (...args: Args) => B
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B
): (this: Self, ...args: Args) => B
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C
): (...args: Args) => C
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C
): (this: Self, ...args: Args) => C
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D
>(
body: (...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D
): (...args: Args) => D
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D
): (this: Self, ...args: Args) => D
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E
): (...args: Args) => E
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E
): (this: Self, ...args: Args) => E
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F
): (...args: Args) => F
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F
): (this: Self, ...args: Args) => F
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G
): (...args: Args) => G
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G
): (this: Self, ...args: Args) => G
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H
): (...args: Args) => H
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H
): (this: Self, ...args: Args) => H
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I
): (...args: Args) => I
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I
): (this: Self, ...args: Args) => I
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J
): (...args: Args) => J
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J
): (this: Self, ...args: Args) => J
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K
): (...args: Args) => K
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K
): (this: Self, ...args: Args) => K
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L
): (...args: Args) => L
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L
): (this: Self, ...args: Args) => L
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M
): (...args: Args) => M
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M
): (this: Self, ...args: Args) => M
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N
): (...args: Args) => N
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N
): (this: Self, ...args: Args) => N
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O
): (...args: Args) => O
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O
): (this: Self, ...args: Args) => O
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P
): (...args: Args) => P
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P
): (this: Self, ...args: Args) => P
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q
): (...args: Args) => Q
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q
): (this: Self, ...args: Args) => Q
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q,
r: (_: Q, ...args: Args) => R
): (...args: Args) => R
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q,
r: (_: Q, ...args: Args) => R
): (this: Self, ...args: Args) => R
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q,
r: (_: Q, ...args: Args) => R,
s: (_: R, ...args: Args) => S
): (...args: Args) => S
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q,
r: (_: Q, ...args: Args) => R,
s: (_: R, ...args: Args) => S
): (this: Self, ...args: Args) => S
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q,
r: (_: Q, ...args: Args) => R,
s: (_: R, ...args: Args) => S,
t: (_: S, ...args: Args) => T
): (...args: Args) => T
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q,
r: (_: Q, ...args: Args) => R,
s: (_: R, ...args: Args) => S,
t: (_: S, ...args: Args) => T
): (this: Self, ...args: Args) => TCreates an Effect-returning function without tracing.
When to use
Use when you are defining a reusable Effect function whose implementation would otherwise be a normal function returning gen, especially when tracing spans or stack-frame capture are not needed.
Details
Compared to a plain function that returns gen, Effect.fnUntraced
reuses the generator body instead of allocating a fresh generator closure
around the arguments on every call. It does not record an Effect stack-frame
boundary and does not create tracing spans. Use fn when you need
those stack frames or spans. Additional arguments after the generator body
act like pipe transforms: each transform receives the previous result and
the original function arguments. Annotate the generator return type with
Effect.fn.Return<A, E, R> when the produced Effect type needs to be
stated explicitly.
Example (Defining untraced effect functions)
import { Effect } from "effect"
const f = Effect.fnUntraced(function*(
value: string
) {
return yield* Effect.succeed(value.length)
})
// ┌─── Effect.Effect<number>
// ▼
const program = f("hello")Example (Transforming the returned Effect)
import { Effect } from "effect"
const f = Effect.fnUntraced(
function*(value: string) {
return yield* Effect.succeed(value.length)
},
(effect, value) =>
effect.pipe(Effect.map((length) => `${value}: ${length}`))
)
// ┌─── Effect.Effect<string>
// ▼
const program = f("hello")Example (Annotating an untraced non-parametric function)
import { Effect } from "effect"
const f = Effect.fnUntraced(function*(
value: string
): Effect.fn.Return<number> {
return yield* Effect.succeed(value.length)
})
// ┌─── Effect.Effect<number>
// ▼
const program = f("hello")Example (Annotating an untraced parametric function)
import { Effect } from "effect"
const f = Effect.fnUntraced(function*<A>(
value: A
): Effect.fn.Return<A> {
return yield* Effect.succeed(value)
})
// ┌─── Effect.Effect<string>
// ▼
const program = f("hello")export const const fnUntraced: fn.UntracedCreates an Effect-returning function without tracing.
When to use
Use when you are defining a reusable Effect function whose implementation
would otherwise be a normal function returning
gen
, especially when
tracing spans or stack-frame capture are not needed.
Details
Compared to a plain function that returns
gen
, Effect.fnUntraced
reuses the generator body instead of allocating a fresh generator closure
around the arguments on every call. It does not record an Effect stack-frame
boundary and does not create tracing spans. Use
fn
when you need
those stack frames or spans. Additional arguments after the generator body
act like pipe transforms: each transform receives the previous result and
the original function arguments. Annotate the generator return type with
Effect.fn.Return<A, E, R> when the produced Effect type needs to be
stated explicitly.
Example (Defining untraced effect functions)
import { Effect } from "effect"
const f = Effect.fnUntraced(function*(
value: string
) {
return yield* Effect.succeed(value.length)
})
// ┌─── Effect.Effect<number>
// ▼
const program = f("hello")
Example (Transforming the returned Effect)
import { Effect } from "effect"
const f = Effect.fnUntraced(
function*(value: string) {
return yield* Effect.succeed(value.length)
},
(effect, value) =>
effect.pipe(Effect.map((length) => `${value}: ${length}`))
)
// ┌─── Effect.Effect<string>
// ▼
const program = f("hello")
Example (Annotating an untraced non-parametric function)
import { Effect } from "effect"
const f = Effect.fnUntraced(function*(
value: string
): Effect.fn.Return<number> {
return yield* Effect.succeed(value.length)
})
// ┌─── Effect.Effect<number>
// ▼
const program = f("hello")
Example (Annotating an untraced parametric function)
import { Effect } from "effect"
const f = Effect.fnUntraced(function*<A>(
value: A
): Effect.fn.Return<A> {
return yield* Effect.succeed(value)
})
// ┌─── Effect.Effect<string>
// ▼
const program = f("hello")
fnUntraced: fn.type fn.Untraced = {
<Eff extends Effect<any, any, any>, AEff, Args extends Array<any>>(body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>): (...args: Args) => Effect<AEff, [Eff] extends [never] ? never : [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E : never, [Eff] extends [never] ? never : [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R : never>;
<Self, Eff extends Effect<any, any, any>, AEff, Args extends Array<any>>(body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>): (this: Self, ...args: Args) => Effect<AEff, [Eff] extends [never] ? never : [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E : never, [Eff] extends [never] ? never : [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R : never>;
<Eff extends Effect<any, any, any>, AEff, Args extends Array<any>, A>(body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>, a: (_: Effect<AEff, [Eff] extends [never] ? never : [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E : never, [Eff] extends [never] ? never : [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R : never>, ...args: Args) => A): (...args: Args) => A;
<Self, Eff extends Effect<any, any, any>, AEff, Args extends Array<any>, A>(body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>, a: (_: Effect<AEff, [Eff] extends [never] ? never : [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E : never, [Eff] extends [never] ? never : [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R : never>, ...args: Args) => A): (this: Self, ...args: Args) => A;
<Eff extends Effect<any, any, any>, AEff, Args extends Array<any>, A, B>(body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>, a: (_: Effect<AEff, [Eff] extends [never] ? never : [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E : never, [Eff] extends [never] ? never : [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R : never>, ...args: Args) => A, b: (_: A, ...args: Args) => B): (...args: Args) => B;
<Self, Eff extends Effect<any, any, any>, AEff, Args extends Array<any>, A, B>(body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>, a: (_: Effect<AEff, [Eff] extends [never] ? never : [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E : never, [Eff] extends [never] ? never : [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R : never>, ...args: Args) => A, b: (_: A, ...args: Args) => B): (this: Self, ...args: Args) => B;
<Eff extends Effect<any, any, any>, AEff, Args extends Array<any>, A, B, C>(body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>, a: (_: Effect<AEff, [Eff] extends [never] ? never : [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E : never, [Eff] extends [never] ? never : [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R : never>, ...args: Args) => A, b: (_: A, ...args: Args) => B, c: (_: B, ...args: Args) => C): (...args: Args) => C;
<Self, Eff extends Effect<any, any, any>, AEff, Args extends Array<any>, A, B, C>(body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>, a: (_: Effect<AEff, [Eff] extends [never] ? never : [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E : never, [Eff] extends [never] ? never : [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R : never>, ...args: Args) => A, b: (_: A, ...args: Args) => B, c: (_: B, ...args: Args) => C): (this: Self, ...args: Args) => C;
<Eff extends Effect<any, any, any>, AEff, Args extends Array<any>, A, B, C, D>(body: (...args: Args) => Generator<Eff, AEff, never>, a: (_: Effect<AEff, [Eff] extends [never] ? never : [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E : never, [Eff] extends [never] ? never : [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R : never>, ...args: Args) => A, b: (_: A, ...args: Args) => B, c: (_: B, ...args: Args) => C, d: (_: C, ...args: Args) => D): (...args: Args) => D;
<Self, Eff extends Effect<any, any, any>, AEff, Args extends Array<any>, A, B, C, D>(body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>, a: (_: Effect<AEff, [Eff] extends [never] ? never : [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E : never, [Eff] extends [never] ? never : [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R : never>, ...args: Args) => A, b: (_: A, ...args: Args) => B, c: (_: B, ...args: Args) => C, d: (_: C, ...args: Args) => D): (this: Self, ...args: Args) => D;
<Eff extends Effect<any, any, any>, AEff, Args extends Array<any>, A, B, C, D, E>(body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>, a: (_: Effect<AEff, [Eff] extends [never] ? never : [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E : never, [Eff] extends [never] ? never : [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R : never>, ...args: Args) => A, b: (_: A, ...args: Args) => B, c: (_: B, ...args: Args) => C, d: (_: C, ...args: Args) => D, e: (_: D, ...args: Args) => E): (...args: Args) => E;
<Self, Eff extends Effect ...
Type of the untraced function builder used by Effect.fnUntraced.
Untraced = import internalinternal.const fnUntraced: fn.UntracedfnUntraced