Что такое каррирование (`currying`) и как оно работает?
Каррирование — преобразование функции с несколькими аргументами в цепочку функций, каждая из которых принимает один аргумент.
// Обычная функция
const add = (a, b, c) => a + b + c;
// Каррированная
const curriedAdd = a => b => c => a + b + c;
curriedAdd(1)(2)(3); // 6
Универсальная функция каррирования:
function curry(fn) {
return function curried(...args) {
if (args.length >= fn.length) return fn(...args);
return (...moreArgs) => curried(...args, ...moreArgs);
};
}