UNPKG

@tempest/core

Version:

The core of the Tempest Stream Library

64 lines 1.52 kB
/** * Takes a function with 1 argument and returns a curried version of it * * @export * @template A * @template B * @param {(a: A) => B} f * @returns {OneMore<A, B>} */ export function curry1(f) { function curried(a) { switch (arguments.length) { case 0: return curried; case 1: return f(a); default: return curried; } } return curried; } /** * Takes a function with 2 arguments and returns a curried version of it * * @export * @template A * @template B * @template C * @param {(a: A, b: B) => C} f * @returns {TwoMore<A, B, C>} */ export function curry2(f) { function curried(a, b) { switch (arguments.length) { case 0: return curried; case 1: return curry1((b) => f(a, b)); case 2: return f(a, b); default: return curried; } } return curried; } /** * Takes a function with 3 arguments and returns a curried version * * @export * @template A * @template B * @template C * @template D * @param {(a: A, b: B, c: C) => D} f * @returns {ThreeMore<A, B, C, D>} */ export function curry3(f) { function curried(a, b, c) { switch (arguments.length) { case 0: return curried; case 1: return curry2((b, c) => f(a, b, c)); case 2: return curry1((c) => f(a, b, c)); case 3: return f(a, b, c); default: return curried; } } return curried; } //# sourceMappingURL=curry.js.map