Implementing Currying
We can create a helper function to automatically curry any given function. This function collects arguments until it has enough, then calls the original function.
function curry(fn) { return function curried(...args) { if (args.length >= fn.length) { return fn(...args); } return (...nextArgs) => curried(...args, ...nextArgs); };}
const sum = (a, b, c) => a + b + c;const curriedSum = curry(sum);console.log(curriedSum(1)(2)(3)); // 6console.log(curriedSum(1, 2)(3)); // 6