function sum(x) {
return function add(y) {
if (!y) return x
return sum(x + y)
}
}
sum(1)(2)(3)(4)()
function sum22(x) {
function add(y) {
if (!!y) return sum22(x + y)
}
add.count = function() {
return x
}
return add
}
sum22(1)(2)(3).count()
function sum3() {
let ags = [...arguments]
return function add() {
let ags2 = [...arguments]
if (!ags2.length) return ags.reduce((a, b) => +a + +b, 0)
return sum3(...ags.concat(ags2))
}
}
sum3(1,2,3)()
sum3(1,2,3)(1,2,3,4)()