Složité myšlenky se špatně udržují, proto se do reálné praxe nehodí.
Takze misto napr. flatMap a foreach na jeden radek davate prednost ciste imperativnimu pristupu - ukecany cyklus na nekolik radku? Vzdyt to nic neprinasi, jen delsi kod. Nevim, prijde mi, ze slozite myslenky se lepe transformuji na jednoduche ve FP - mam nekolik funkci ktere postupne vstup zpracuji. V imperativnim programovani to casto skonci velkou metodou s nekolika vnorenymi cykly.
I reálné algoritmy v živé přírodě, které vznikly díky evoluci, nejsou ve své podstatě složité a jsou složeny z interakce jednoduchých elementů. A nejen tam. Například úplný soubor logických funkcí tvoří Shefferova funkce. No až v Haskellu nebude if a nebo while, tedy imperativní prvky, pak možná bude čitelný a elegantní :-) Zaměnit if a : y za y = if a : c moc elegantní není. Z hlediska čitelnosti programu je to katastrofa, protože se vám tam vynořuje to c, a musíte hledat, o co vlastně jde. Jistě u programu o 10 řádcích to problém není, problém to už je, když těch řádků jsou tisíce. Navíc, abyste někdy v budoucnosti mohl modifikovat to c, musíte dojít až k jeho zdroji, a zpětně prohledávat řetězy transformací imutable objektů, protože to c máte samozřejmě použito ve více místech programu a změnit ho potřebujete jen v jednom místě. Přidání modifikačního dekorátoru v místě použití situaci neřeší. Jen systém znepřehledňuje.
No, abych byl uprimny tak se moc nechytam.
c? Kdyz jsem delal tu chvilku v Haskellu, tak v tymu byla snaha mit funkce co nejkratsi a nejstrucnejsi, idealne vzdy s tim typovym zapisem (ten projektik presahl tisic radek urcite). Navic FP je snad zalozeno na tom, ze mame jasny vstup a vystup, vse bez vedlejsich efektu, jak se tedy
c muze nekde ztracet?