Функция каррирования для любого количества аргументов

TODO: Напишите функцию каррирования, должна принимать функцию, а возвращать функцию
Каррирование – это трансформация функций таким образом, чтобы они принимали аргументы не как f(a, b, c), а как f(a)(b)(c)
Должна работать для любого количества аргументов

export const curry = () => {};

Ответы (1 шт):

Автор решения: Aleksandr Belous
const infiniteCurry = fn => {
  const next = (...args) => {
    return x => {
      if (!x) {
        return args.reduce((acc, a) => {
          return fn.call(fn, acc, a)
        }, 0);
      }
      return next(...args, x);
    };
  };
  return next();
};

const iSum = infiniteCurry((x, y) => x + y);
console.log(iSum(1)(3)(4)(2)());
→ Ссылка