Q27 [Coding]: Implement a generic curry() helper function.

function curry(fn) {
  return function curried(...args) {
    if (args.length >= fn.length) {
      return fn.apply(this, args);
    }
    return function(...nextArgs) {
      return curried.apply(this, args.concat(nextArgs));
    };
  };
}
Key Takeaways
  • Compares gathered args.length against the expected function parameter count (fn.length).
  • Recursively returns outer wrapper functions until all parameters are fulfilled.
Knowledge Check

What property of a Function object indicates its declared expected argument count?