function add() {
let args = Array.prototype.slice.call(arguments)
let add1 = function() {
args = args.concat([...arguments])
return add1
}
add1.toString = function() {
return args.reduce((a, b) => { return a+b})
}
return add1
}
function curry(fn,...args){
return args.length<fn.length? (...arguments)=>curry(fn,...args,...arguments) : fn(...args)
}
//test
function add(a,b,c){
return a+b+c;
}
var add1 = curry(add);
add1(1)(2)(3);