«Каррирование» и «частичное применение» — это концепции функционального программирования, которые включают преобразование функций с несколькими аргументами в серию функций, которые принимают по одному аргументу за раз. Хотя у них схожие цели, они различаются по способу применения.
Каррирование — это процесс преобразования функции с несколькими аргументами в последовательность функций, каждая из которых принимает один аргумент. Вот пример каррирования в JavaScript:
// Currying example
function add(a) {
return function (b) {
return a + b;
};
}
const addFive = add(5);
console.log(addFive(3)); // Output: 8
В этом примере функция addпринимает первый аргумент aи возвращает внутреннюю функцию, которая принимает второй аргумент b. Внутренняя функция при вызове добавляет aи b.
Частичное применение, с другой стороны, — это процесс предварительного исправления аргументов функции, создания новой функции с меньшим количеством аргументов. Вот пример частичного применения в JavaScript:
// Partial application example
function multiply(a, b) {
return a * b;
}
const double = multiply.bind(null, 2);
console.log(double(5)); // Output: 10
В этом примере функция multiplyпринимает два аргумента aи b. Метод bindиспользуется для создания новой функции с именем doubleпутем фиксации первого аргумента как 2. Когда doubleвызывается с одним аргументом, он умножает фиксированное значение (2) на предоставленный аргумент.
Эти концепции имеют различные применения в функциональном программировании и могут быть реализованы на разных языках программирования. Некоторые языки, такие как Haskell и Elm, изначально поддерживают каррирование, тогда как другие могут потребовать явной реализации.