<A>(self: A, args: IArguments): unknownApplies a pipe method's variadic arguments to an initial value from left
to right.
When to use
Use to implement a custom .pipe(...) method from JavaScript's arguments
object.
Details
This helper is intended for implementing Pipeable.pipe methods that
receive JavaScript's arguments object. With no functions it returns the
original value; otherwise it feeds each result into the next function.
Example (Implementing a pipe method)
import { Pipeable } from "effect"
class NumberBox {
constructor(readonly value: number) {}
pipe(..._fns: ReadonlyArray<(value: number) => number>): number {
return Pipeable.pipeArguments(this.value, arguments) as number
}
}
const result = new NumberBox(5).pipe(
(n) => n + 2,
(n) => n * 3
)
console.log(result) // 21export const const pipeArguments: <A>(
self: A,
args: IArguments
) => unknown
Applies a pipe method's variadic arguments to an initial value from left
to right.
When to use
Use to implement a custom .pipe(...) method from JavaScript's arguments
object.
Details
This helper is intended for implementing Pipeable.pipe methods that
receive JavaScript's arguments object. With no functions it returns the
original value; otherwise it feeds each result into the next function.
Example (Implementing a pipe method)
import { Pipeable } from "effect"
class NumberBox {
constructor(readonly value: number) {}
pipe(..._fns: ReadonlyArray<(value: number) => number>): number {
return Pipeable.pipeArguments(this.value, arguments) as number
}
}
const result = new NumberBox(5).pipe(
(n) => n + 2,
(n) => n * 3
)
console.log(result) // 21
pipeArguments = <function (type parameter) A in <A>(self: A, args: IArguments): unknownA>(self: Aself: function (type parameter) A in <A>(self: A, args: IArguments): unknownA, args: IArgumentsargs: IArguments): unknown => {
switch (args: IArgumentsargs.IArguments.length: numberlength) {
case 0:
return self: Aself
case 1:
return args: IArgumentsargs[0](self: Aself)
case 2:
return args: IArgumentsargs[1](args: IArgumentsargs[0](self: Aself))
case 3:
return args: IArgumentsargs[2](args: IArgumentsargs[1](args: IArgumentsargs[0](self: Aself)))
case 4:
return args: IArgumentsargs[3](args: IArgumentsargs[2](args: IArgumentsargs[1](args: IArgumentsargs[0](self: Aself))))
case 5:
return args: IArgumentsargs[4](args: IArgumentsargs[3](args: IArgumentsargs[2](args: IArgumentsargs[1](args: IArgumentsargs[0](self: Aself)))))
case 6:
return args: IArgumentsargs[5](args: IArgumentsargs[4](args: IArgumentsargs[3](args: IArgumentsargs[2](args: IArgumentsargs[1](args: IArgumentsargs[0](self: Aself))))))
case 7:
return args: IArgumentsargs[6](args: IArgumentsargs[5](args: IArgumentsargs[4](args: IArgumentsargs[3](args: IArgumentsargs[2](args: IArgumentsargs[1](args: IArgumentsargs[0](self: Aself)))))))
case 8:
return args: IArgumentsargs[7](args: IArgumentsargs[6](args: IArgumentsargs[5](args: IArgumentsargs[4](args: IArgumentsargs[3](args: IArgumentsargs[2](args: IArgumentsargs[1](args: IArgumentsargs[0](self: Aself))))))))
case 9:
return args: IArgumentsargs[8](args: IArgumentsargs[7](args: IArgumentsargs[6](args: IArgumentsargs[5](args: IArgumentsargs[4](args: IArgumentsargs[3](args: IArgumentsargs[2](args: IArgumentsargs[1](args: IArgumentsargs[0](self: Aself)))))))))
default: {
let let ret: Aret = self: Aself
for (let let i: numberi = 0, let len: numberlen = args: IArgumentsargs.IArguments.length: numberlength; let i: numberi < let len: numberlen; let i: numberi++) {
let ret: Aret = args: IArgumentsargs[let i: numberi](let ret: Aret)
}
return let ret: Aret
}
}
}