Funkcionální paradigma proniká do mainstreamového JavaScriptu — immutability, pure functions, composition. Proč na tom záleží a jak začít psát funkcionální JS.
FP renaissance v JavaScriptu¶
Funkcionální programování zažívá renesanci — Redux je postavený na pure functions, React preferuje immutable stav, RxJS je funkcionální v jádru. JavaScript, jako multi-paradigmatický jazyk, je ideální pro postupnou adopci FP principů.
FP není o akademických konceptech — je to praktický přístup k psaní předvídatelného, testovatelného a composable kódu.
Pure functions a immutability¶
Dva základní principy FP:
Pure functions — stejný input vždy produkuje stejný output, žádné side effects:
// Impure - mutuje vstup
function addItem(cart, item) {
cart.items.push(item);
cart.total += item.price;
return cart;
}
// Pure - vrací nový objekt
function addItem(cart, item) {
return {
items: [...cart.items, item],
total: cart.total + item.price
};
}
Immutability — data se nemění, vytváří se nové verze. Spread operátor a Object.assign umožňují elegantní immutable updates.
Composition a higher-order functions¶
Funkcionální kód se skládá jako LEGO — malé, jednoúčelové funkce composed do komplexních operací:
// Utility funkce
const pipe = (...fns) => x => fns.reduce((v, f) => f(v), x);
const double = x => x * 2;
const addOne = x => x + 1;
const square = x => x * x;
// Composition
const transform = pipe(double, addOne, square);
transform(3); // ((3 * 2) + 1)^2 = 49
// Array transformace
const activeUserEmails = users
.filter(u => u.active)
.map(u => u.email)
.sort();
map, filter, reduce jsou funkcionální primitiva, které JavaScript podporuje nativně.
Knihovny a tooling¶
Ekosystém FP knihoven pro JavaScript:
- Ramda** — funkcionální utility knihovna (alternativa k Lodash s FP přístupem)
- Immutable.js** — persistentní immutable datové struktury od Facebooku
- Folktale** — algebraické datové typy (Maybe, Result)
- Sanctuary** — typově bezpečná FP knihovna
Pro praktické použití doporučujeme Ramda pro utility funkce a Immutable.js pro komplexní state management.
Závěr: pragmatický FP přístup¶
Nemusíte přepsat celý codebase do funkcionálního stylu. Začněte s pure functions pro business logiku, immutable state v Redux a composition místo inheritance. Pragmatický FP přístup výrazně zlepší kvalitu a testovatelnost vašeho kódu.