Skip to main content

Каррування проти часткового застосування

Partial application (часткове застосування) і currying (каррування) справді схожі - обидві техніки дозволяють частково передавати аргументи функції. Але між ними є чітка відмінність за суттю та метою.


1. Визначення

Каррування (Currying)

Перетворює функцію з n аргументами на ланцюжок функцій, кожна з яких приймає рівно один аргумент.

javascript
// Вихідна функція function add(a, b, c) { return a + b + c; } // Каррована версія const curriedAdd = a => b => c => a + b + c; curriedAdd(1)(2)(3); // 6

Кожен виклик повертає нову функцію, яка очікує наступний аргумент. Каррування - це чисте функціональне перетворення сигнатури.


Часткове застосування (Partial Application)

Створює нову функцію із заздалегідь заданими (частково застосованими) аргументами, але не змінює кількість аргументів самої функції.

javascript
function add(a, b, c) { return a + b + c; } // Частково застосовуємо перший аргумент const add1 = add.bind(null, 1); add1(2, 3); // 6

Partial просто фіксує частину аргументів, а решту можна передати пізніше разом.


2. Головна відмінність

КритерійCurryingPartial Application
Що робитьРозбиває функцію на ланцюжок функцій по одному аргументуФіксує частину аргументів вихідної функції
Кількість аргументів за крок1 аргумент на кожен викликКілька аргументів можна передати одразу
ПовертаєФункцію, що очікує один наступний аргументФункцію, що очікує решту аргументів
Приклад викликуf(a)(b)(c)f(a, b)(c) або f(a)(b, c)
МетаУніфікація виклику та композиціяПовторне використання функції із заздалегідь заданими аргументами

Приклад для наочності:

Каррування:

javascript
const multiply = a => b => c => a * b * c; multiply(2)(3)(4); // 24

Часткове застосування:

javascript
function multiply(a, b, c) { return a * b * c; } const double = multiply.bind(null, 2); // фіксуємо a=2 double(3, 4); // 24

Підсумок:

Currying - це формальне перетворення функції на послідовність викликів по одному аргументу. Partial Application - це практична техніка, щоб заздалегідь підставити частину аргументів, а решту передати пізніше.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.