Day 47 Currying & Composition
Currying ek function ko ek ek argument receive karne wale functions ki chain mein convert karta hai. Composition functions ko pipeline ki tarah chain karta hai — FP ka powerful combination.
Currying
Multi-argument functions ko single-argument chain mein convert karo.
// Regular function
function add(a, b, c) { return a + b + c; }
// Curried version
function curriedAdd(a) {
return function(b) {
return function(c) {
return a + b + c;
};
};
}
console.log(curriedAdd(1)(2)(3)); // 6
// Arrow function version
const curriedAdd2 = a => b => c => a + b + c;
// Practical: reusable functions
const multiply = x => y => x * y;
const double = multiply(2);
const triple = multiply(3);
console.log([1,2,3,4].map(double)); // [2,4,6,8]
console.log([1,2,3,4].map(triple)); // [3,6,9,12]
// Generic curry function
function curry(fn) {
return function curried(...args) {
if (args.length >= fn.length) return fn(...args);
return (...more) => curried(...args, ...more);
};
}
🎯 Practice Challenge
validate function banao jo curried ho: validate(rules)(data). Rules: minLength, maxLength, isEmail. Chain karo.