Citace od: JS kdy 27. 07. 2017, 13:43:01
Taky bych rekl, ze hlavni vlastnosti FP je pouzivani funkci v matematickem smyslu, nikoli pouzivani funkci vyssiho radu; to druhe ma ostatne i OOP (delegaty a dalsi vzory) a klasicke strukturovane programovani (odkaz na funkci).
Právě že klasické procedurální, strukturované programování odpovídá té definici "používání funkcí" (stačí jen nepoužívat vedlejší efekty), ale funkce vyššího řádu tam naopak nevyskytuje (odkaz na funkci je hezký jako callback, ale velmi těžko se transformuje a skládá). Objekty samozřejmě umožňují implementovat totéž co funkce vyššího řádu, ale člověk musí zapomenout na ten základní koncept že OOP = modelování reálných entit (troufám si říci, že tohle napáchalo škody srovnatelné s NULL a Excelem).
Ono to samozřejmě spolu souvisí - pokud se budu snažit programovat procedurálně bez vedlejších efektů, tak velmi brzo narazím na to že se mi neustále opakuje podobný kód. Tradičním řešením je (když pominu "copy&paste") generátor kódu, pak se do módy dostalo imperativní OOP.
PS: Koukám - lexikální uzávěry a lambda funkce... no to jsou určitě užitečné věci, ale dá se obejít i bez nich.