Exercise 6: Curry Function (partial application)

Problem Statement

Create a function `curry(fn)` that curries a function. Example: curry((a, b, c) => a + b + c) → (a) => (b) => (c) => a + b + c

Sample Output:

const add = curry((a, b, c) => a + b + c);
add(1)(2)(3) => 6
add(1, 2)(3) => 6

Solution

const curry = (fn) => {
  return function curried(...args) {
    if (args.length >= fn.length) return fn(...args);
    return (...nextArgs) => curried(...args, ...nextArgs);
  };
};

Explanation

Overall Goal:

  • Function ko curry karna: partial application enable karna.

Line 1: Function header

  • const curry = (fn) => {

Line 2: Return curried function

  • return function curried(...args)

Line 3: Check if complete

  • if (args.length >= fn.length) return fn(...args);

Line 4: Partial application

  • return (...nextArgs) => curried(...args, ...nextArgs);

Real world:

  • Functional programming: partial application.
  • API design: flexible function calls.