단일 호출로 처리하는 함수를 각각의 인수가 호출 가능한 프로세스로 호출된 후 병합될 수 있게 변환하는 것이다.
f(a,b,c)
➡️ 커링 ➡️f(a)(b)(c)
const sum = (x, y) => x + y;
const curriedSum = x => y => x + y;
console.log(sum(10, 20));
console.log(curriedSum(10));
console.log(curriedSum(10)(20));
const tenPlus = curriedSum(10);
console.log(tenPlus);
console.log(tenPlus(100));
function curry(func) {
return function curried(...args) {
if (args.length >= func.length) {
return func.apply(this, args);
} else {
return function (...args2) {
return curried.apply(this, args.concat(args2));
}
}
};
}