Uncurry a function
Call a curried function with several arguments at once.
function uncurry(fn, depth = 1) { return (...args) => args.slice(0, depth).reduce((next, arg) => next(arg), fn); }
Usage
const sum = a => b => c => a + b + c;
uncurry(sum, 1)(1)(2)(3); // → 6
uncurry(sum, 2)(1, 2)(3); // → 6
uncurry(sum, 3)(1, 2, 3); // → 6
Know the limits
- Arguments beyond depth are ignored, as in the original. depth must not exceed the curried function’s depth.
The function above is the code the usage lines run. It does not validate its arguments; add checks where it receives untrusted input.
Source & maintenance
Based on Uncurry a function from the original 1loc collection by Nguyen Huu Phuoc. Copyright (c) 2020 phuoc-ng. MIT licensed.
Documented as a reference with executed usage lines. Original MDX retained as inert source evidence.
Maintained by Oveyon. Source commit: 14b481cf60df. Read the license.
Keep exploring
- Logical xor operator — True when exactly one of two values is truthy.
- Identity function — Return the argument unchanged.
- Box handler — Chain transformations on a value, then unwrap the result.