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.