JSFiddle - React, Tailwind, and code Playground
JavaScript
const curry = (fn) => {
const args = []
const f = function(arg) {
if (!arguments.length) {
return args.reduce((acc, arg) => {
if (typeof arg !== 'number') {
window.open('https://www.youtube.com/watch?v=_VxQrbNPxO4')
throw Error('?!')
}
return fn.call(fn, acc, arg)
}, 0)
}
args.push(arg)
return f
}
return f
}
const sum = curry((x, y) => x + y)
console.log(sum(4)(4)(2)(1)(5)(4)()) // последний вызов без аргументов активизирует цепочку вызовов