Uncurry a function

Call a curried function with several arguments at once.

JavaScriptNode.js & browsers Version 1.0.0 · MIT · .md

uncurry-a-function.js
function uncurry(fn, depth = 1) { return (...args) => args.slice(0, depth).reduce((next, arg) => next(arg), fn); }

Usage

usage.js
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

Lines marked → were executed in Node.js 22 and in headless Chromium, and each result was compared with the value shown. Lines marked e.g. are illustrative.

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.

Usage lines executed in Node.js 22 and headless Chromium; no external services · reviewed October 28, 2026.

Keep exploring

Type two or more characters. Try “duplicate”, “webhook” or “retry”.