Curifikace v Javascriptu

AndreaAndrea

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.