A ještě jedna poznámka. Pro autora. Lambdy nejsou vůbec nic speciálního a funkcionálního. Často mají lidé tendenci říkat, že jazyk je funkcionální když má lambdy, ale to je mýlka. Jazyk je funkcionální pouze tehdy když každá jedna funkce je referenčně transparentní. Nic víc a nic míň. Termín "pure functional" vznikl pro to, že lidé jak dementi označují nálepkou funkcionální jazyk úplně každý jazyk v kterým jsou lambdy a v STD knihovně funkce jako map, fold či filtr ... upřímně řečeno, podle této definice je funkcionální úplně každý jazyk dneška ...
Články se mi ale jinak líbí, takže za mne super. To jen aby si autor nemyslel že v jeho článcích si dávaji lišky dobrou noc ...
Jinak +1 za schopnost vidět že Haskell není "pure" :) To se jen tak nevidí, plno lidí buď Haskell zahodí s tím že ho nechápe, výrazně menší hlouček lidí se dokáže sám zhypnotizovat natolik že jim začne čistota Haskellu připadat logická a o mnoho menší hlouček, který skutečně chápe o co go, ví že žádná magie pod kapotou není a prostě to vedlejší efekty dělá ...
Ale tak to je jasné, že někde ta imperativní část musí být schována :-) Pokud Haskell dokáže vypsat na stdout tyto dva řádky přesně v tomto pořadí:
Hello
World
tak prostě musí "serializovat" a provést to imperativně + nějakou funkcionálně "nečistou" funkcí (tedy spíš procedurou :--)
Souhlas s tím, že lambdy samy o sobě nedělají jazyk funkcionální. Ten termín je však dost zatížen minulostí, protože právě implementací lambda kalkulu do programovacího jazyka (LISPu) vzniklo "něco" co bylo zapotřebí odlišit od tehdejších imperativních jazyků (Fortran...). A vzhledem k tomu, že tehdejší LISP 1 byl funkcionální (asi jen kromě READ a TRACKLIST, i když ta druhá funkce je určena jen pro ladění), tak už to označení používáme dál (i když dnešní LISP není striktně funkcionální).