JSFiddle - React, Tailwind, and code Playground
by Alexey
JavaScript
function curry(func) {
return function curried(...args) {
if (args.length >= func.length) {
return func.apply(this, args);
} else {
console.log(2)
return function(...args2) {
console.log(args.concat(args2))
console.log(args)
console.log(args2)
return curried.apply(this, args.concat(args2));
}
}
};
}
function sum(a, b, c) {
return a + b + c;
}
let x = sum.apply(null, [2,4,7]);
//console.log(x)
let curriedSum = curry(sum);
//console.log( curriedSum(1, 2, 3) ); // 6, всё ещё можно вызывать нормально
//console.log( curriedSum(1)(2,3) ); // 6, каррирование первого аргумента
console.log( curriedSum(1)(2)(3) ); // 6, каррирование всех аргументов