You can easily write a function that applies multiple arguments to such a curried function:
const applyuncurry = fn => (...args) => args.reduce((f, x) => f(x), fn); // or alternatively: const applyuncurry = fn => (...args) => { let f = fn; for (const x of args) f = f(x); return f; } Now you can invoke add like so:
applyuncurry(add)(2, 3, 4) and if you still hate that you could also use
const $ = applyuncurry(applyuncurry); $(add, 2, 3, 4)