Разница
| Currying | Partial application |
|---|
| Результат | Цепочка функций по одному аргументу | Функция с меньшей арностью |
| Пример | f(a,b,c) → f(a)(b)(c) | зафиксировали a → f'(b,c) |
| Аргументы за шаг | Обычно ровно 1 | Один или несколько сразу |
Оба позволяют «недодать» аргументы, но форма другая: curry — полная декомпозиция на unary; partial — pragmatичная фиксация префикса аргументов.
const f = (a) => (b) => (c) => a + b + c;
f(1)(2)(3);
const g = (a, b, c) => a + b + c;
const g1 = g.bind(null, 1);
g1(2, 3);
Итог: curry дробит все аргументы в цепочку unary; partial просто заранее подставляет часть из них.