Skip to content

Latest commit

 

History

History
30 lines (21 loc) · 1.71 KB

CURRYING.md

File metadata and controls

30 lines (21 loc) · 1.71 KB

Currying

Currying (рус. каррирование, карринг) — это техника преобразования функции с N аргументами в цепочку из N функций, каждая из которых принимает по одному аргументу.

Это достигается при помощи создания функции с одним аргументом, возвращающей новую функцию, связанную с контекстом внешней через замыкание.

// К примеру мы имеем функцию add, которая принимает два аргумента:
add(3, 5);

// После каррирования функции add, сигнатура функции будет другая:
curryAdd(3)(5);

Данная техника позволяет в частности создавать так называемые частичные применения. В частности, для нашей функции:

// Создали частичное применение для функции add

var add3 = curryAdd(3);
var add10 = curryAdd(10);

// И теперь мы можем переиспользовать функцию
add3(5); // => 8
add3(7); // => 10
add3(17); // => 20
add10(5); // => 15

Стоит отметить, что реализацию каррирования можно как описать самому, так и использовать готовые решения, в частности Lodash, Wu, Ramda.