Curifikace

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í.


const curriedAdd = curry(add);
        

const curriedAdd = function (x) {
    return function (y) {
        return x+y;
    }
}
        

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.

Související