Описание тега currying

Каррирование - это процесс преобразования функции с несколькими аргументами в функцию с одним аргументом, которая возвращает другую функцию, которая принимает на один аргумент меньше, чем исходный. Такие языки, как Haskell, используют его в качестве механизма приложения аргументов по умолчанию, поскольку он значительно упрощает определенные методы программирования, такие как частичное приложение.

Каррирование - это процесс преобразования функции с несколькими аргументами в функцию с одним аргументом, которая возвращает другую функцию, которая принимает на один аргумент меньше, чем исходный. Такие языки, как haskell, используют это как механизм приложения аргументов по умолчанию, поскольку он значительно упрощает определенные методы программирования, такие как частичное приложение.

Эта техника берет свое начало в комбинаторной логике и была независимо открыта Фреге, Шенфинкелем и Карри в начале 20 века.

Пример ручного каррирования ( es6)

Незатушенная форма

/* definition */
let add = (a, b) => a + b;

/* full application */
let x = add(2, 4);

/* partial application */
let add2 = add.bind(null, 2);
let y = add2(4);

Карри форма

/* definition */
let add = a => b => a + b;

/* full application */
let x = add(2)(4);

/* partial application */
let add2 = add(2);
let y = add2(4);

Каррированные языки программирования