Funkcionální programování přináší mnoho zajímavých technik pro práci s funkcemi.
Jednou z nich je curifikace, což je technika, která se používá k transformaci funkce s více parametry f(a, b, c)
na posloupnost funkcí, které přijímají jeden parametr f(a)(b)(c)
.
Ke currifikaci potřebujeme jazyk podporující funkce vyššího řádu, kterým Javascript je. Protože tento proces vytváří nové funkce, které vrací funkce, dokud nejsou všechny argumenty původní funkce vyřešeny a nevrací konečný výsledek.
Využívá se k zapamatování argumentů
Curifikovat můžeme libovolnou funkci. Může být užitečný v případech, kdy je potřeba vytvořit více variant stejné funkce, například když je potřeba různě upravit chování v závislosti na různých vstupních parametrech.
Funkcionální programování často vede k používání abstraktnějších funkcí a currying se tak hodí pro zapamatování určitých argumentů v funkci a poté použít tuto částečně aplikovanou funkci pro výpočet výsledků v různých situacích. To může vést k většímu znovupoužití kódu a zjednodušení logiky programů.
Výkon
Při použití curifikace vytváříme nové funkce pro každý argument, což znamená, že se vytváří více kódu na paměti a zvyšujeme počet vyvolání funkce. To může vést ke zvýšené spotřebě paměti a větším požadavkům na výkon, pokud by se takových funkcí vytvářelo velké množství.
Příklad curifikace
V jednoduchém příkladu si vytvoříme novou funkci addFive pomocí funkce add s parametrem 5.
function add(x) {
return function(y) {
return x + y;
};
}
const addFive = add(5)
const addThree = add(3)
Tuto funkci můžeme nyní volat s různými hodnotami parametru y a výsledkem bude vždy součet 5 a y a nebo 3 a y.
addFive(4) // 9
addThree(4) // 7
Currying může být také použit spolu s funkcemi vyššího řádu k vytváření funkcí s různými parametry na základě stejného vzoru.