<A extends ReadonlyArray<unknown>, B>(f: (a: A) => B): (...a: A) => BConverts a tupled function back to an uncurried function.
When to use
Use to adapt a tuple-argument function so it accepts multiple arguments.
Example (Converting a tuple to arguments)
import { Function } from "effect"
import * as assert from "node:assert"
const getFirst = Function.untupled(<A, B>(tuple: [A, B]): A => tuple[0])
assert.deepStrictEqual(getFirst(1, 2), 1)combinatorstupled
Source effect/Function.ts:5701 lines
export const const untupled: <
A extends ReadonlyArray<unknown>,
B
>(
f: (a: A) => B
) => (...a: A) => B
Converts a tupled function back to an uncurried function.
When to use
Use to adapt a tuple-argument function so it accepts multiple arguments.
Example (Converting a tuple to arguments)
import { Function } from "effect"
import * as assert from "node:assert"
const getFirst = Function.untupled(<A, B>(tuple: [A, B]): A => tuple[0])
assert.deepStrictEqual(getFirst(1, 2), 1)
untupled = <function (type parameter) A in <A extends ReadonlyArray<unknown>, B>(f: (a: A) => B): (...a: A) => BA extends interface ReadonlyArray<T>ReadonlyArray<unknown>, function (type parameter) B in <A extends ReadonlyArray<unknown>, B>(f: (a: A) => B): (...a: A) => BB>(f: (a: A) => Bf: (a: A extends ReadonlyArray<unknown>a: function (type parameter) A in <A extends ReadonlyArray<unknown>, B>(f: (a: A) => B): (...a: A) => BA) => function (type parameter) B in <A extends ReadonlyArray<unknown>, B>(f: (a: A) => B): (...a: A) => BB): (...a: A extends ReadonlyArray<unknown>a: function (type parameter) A in <A extends ReadonlyArray<unknown>, B>(f: (a: A) => B): (...a: A) => BA) => function (type parameter) B in <A extends ReadonlyArray<unknown>, B>(f: (a: A) => B): (...a: A) => BB => (...a: A extends ReadonlyArray<unknown>a) => f: (a: A) => Bf(a: A extends ReadonlyArray<unknown>a)