Uncurries a function up to depth n
.
Array.prototype.reduce()
on the provided arguments to call each subsequent curry level of the function.length
of the provided arguments is less than n
throw an error.fn
with the proper amount of arguments, using Array.prototype.slice()
.n
, to uncurry up to depth 1
.const uncurry = (fn, n = 1) => (...args) => {
const next = acc => args => args.reduce((x, y) => x(y), acc);
if (n > args.length) throw new RangeError('Arguments too few!');
return next(fn)(args.slice(0, n));
};
const add = x => y => z => x + y + z;
const uncurriedAdd = uncurry(add, 3);
uncurriedAdd(1, 2, 3); // 6
JavaScript, Function
Performs left-to-right function composition for asynchronous functions.
JavaScript, Function
Converges a list of branching functions into a single function and returns the result.
JavaScript, Function
Creates a generator, looping over the given array indefinitely.