var currySub = function (fn) {
let args = Array.prototype.slice.call(arguments, 1);
return function (...arg) {
return fn.apply(null, args.concat(arg));
}
};
function curry(fn, length) {
length = length || fn.length;
return function(...arg) {
if (arg.length < length) {
const combin = [fn].concat(arg);
return curry(currySub.apply(null, combin), length - arg.length);
}
return fn.apply(this, arg);
}
}
function add(a, b, c) {
return a + b + c;
}
var addCurry = curry(add);
console.log(addCurry(1)(2)(3));
console