Varující je, že čisté FP se prakticky nepoužívá
To video, co jsem odkazoval výš, se právě docela detailně zabývá tím, proč to tak je (podle řečníka). A ve spoustě věcí má podle mě pravdu. Jakmile normální programátor uvidí někde napsáno "IO monády", tak zavře uši a nic už vědět nechce. Kdyby viděl "print x `andThen` print y", nemá problém. Čisté FP jazyky doteď žily/žijí převážně v akademickém prostředí a z toho vychází i všechna ta kultura a texty kolem toho. Nejlíp to vyjadřuje okřídlené:
Haskell gets some resistance due to the complexity of using monads to control side effects. Wadler tries to appease critics by explaining that "a monad is a monoid in the category of endofunctors, what's the problem?"
Navíc je myslím dobrý si uvědomit, že FP nutně neznamená pure&lazy. Erlang je sympatický jazyk, kde se na mikroúrovni používá docela pěkné FP, které ale není ani pure, ani lazy, ani silně typované (v obvyklém slova smyslu), takže většina té bižuterie z Haskellu tam není potřeba. Totéž F#, Scala (nakolik můžu posoudit, detailně je neznám). Je to kompromis, kterým se jazyk připraví o některé sympatické vlastnosti a garance, ale použitelnost (pro "obyčejné" programátory) je podstatně vyšší. A touhle cestou se nejspíš půjde, na čemž nevidím nic špatného. Jazyky, které dělají dobře promyšlené, teoreticky vyfutrované kompromisy, bývají fajn. To ale není případ OOP, které udělalo kompromis z technického (implementačního), ne designového důvodu.