Funkcionální programování popisuje mnoho zajímavých technik jakými prácujeme s funkcemi. Jednou z nich je Curifikace. Ke currifikaci potřebujeme jazyk podporující funkce vyššího řádu (např. Haskell, JavaScript).
Curifikace transformuje funkci, která přijímá vícero argumentů např. f(a, b, c)
na posloupnost funkcí, které voláme každou s jedním argumentem zvlášť, tedy f(a)(b)(c)
.
Jednoduchý příklad
Mějme sčítací funkci add
s dvěma argumenty x
a y
.
const add = (x, y) => x + y
Curifikovaná funkce pak vypadá následovně. Obě varianty jsou ekvivalentní.
|
|
Pokud bycho chtěli vytvořit funkci, která k libovolnému y
přičte 1, mohli bychom ji vytvořit jednoduše:
const add1 = (y) => curriedAdd(1)(y)
Využití
Využívá se k zapamatování argumentů.
Curifikovat můžeme libovolnou funkci. Pokud při programování pojmenováváme všechny data se kterými pracujeme, můžeme vhodným pojmenováním částečných funkcí navázat na doménu.