function curry(...args) {
return (num) => curry(...args, num)
}
curry(2)(8)(5) // вернёт function, а должно быть [2, 8, 5]
curry(1)(0)(9)(3)(12) // вернёт function, а должно быть [1, 0, 9, 3, 12]
const xxx = (() => {
function f() {
return arguments.length ? f.bind([].concat.apply(this, arguments)) : this;
}
return f.bind([]);
})();
// или
const xxx = (...args1) => (...args2) =>
args2.length
? xxx(...args1, ...args2)
: args1;xxx(1, 2)(3, 4)() // [1, 2, 3, 4]
const t = xxx(1, 3, 5);
t(7)() // [1, 3, 5, 7]
t(3)(1)() // [1, 3, 5, 3, 1]