* zlepší chápání typů (ať už to, že by funkce nemusela vracet z každého ifu něco jiného, nebo i to, že místo "spešl stringů" by nebyl od věci enum atd.); obecně se někteří na typy začnou dívat jako na kamarády, ne nepřátele
To jednoznačně ano. Škoda, že velká část featur, které se jim v Haskellu začnou líbit, budou v jiných jazycích postrádat. Ale jako tréning na budoucí frustrace v práci je to skvělý. Ještě lepší by bylo je naučit psát všema deseti a pak jim uříznout jednu ruku.
* vede k lepší dekompozici na podproblémy
Je to něčím doložitelné, nebo jenom tvůj subjektivní dojem?
* naučí rekurzi (zvlášť v aplikaci na datové typy)
Což je fajn jako rozšíření obzorů, ale pokud budou dál programovat v mainstreamových jazycích, je to spíš mínus, protože tam bude mít rekurze jiné vastnosti, v nejhorším případě bude použití rekurze, jak se to naučí v Haskellu, přímo nebezpečný antipattern.
* lidé se odnaučí (spíš nenaučí, když s ním začnou) brát funkce jako něco speciálního, takže jim třeba nepřijde divné předávat funkci jako parametr
Callbacky by se měly učit ve všech jazycích, takže pokud někomu předávání funkce přijde divné, je to chyba výuky, ne jazyka.
* vzory
Které velmi pravděpodobně v praxi nepoužijí, protože nikdy FP v praxi používat nebudou (drtivá většina z nich).
* naučí polymorfismus
Opět se naučí jiný polymorfismus, než jaký budou v praxi používat.
( * výjimečně i lidi donutí přemýšlet nad vyhodnocováním; takovou klasikou bývá null xs vs. length xs == 0, kde je xs je nekonečný )
Což opět v praxi, v jiných jazycích, nebudou prakticky vůbec potřebovat, protože problémy, které jsou v Haskellu, tam typicky nemají obdobu, čili to, že se je naučí řešit, si můžou narvat do špic.
ale tohle je takový opakující se pattern. (A ano, některé body závisí na učiteli/materiálech.)
Ano, je to opakující se pattern získávání znalostí a dovedností, které skvěle rozšíří obzory někomu, kdo už nějaký klasický jazyk umí, ale nováčkovi je to zhusta úplně na prd, protože se prvně potřebuje dobře naučit něco praktického a pak teprve něco obohacujícího, ne naopak.
P.S. Tím ani trochu nehaním Haskell, je to skvělý jazyk. Ale pro (přinejmenším) pokročilého juniora, rozhodně ne pro začátečníka, který se chce "naučit programovat" (čti: řešit reálné problémy reálného světa prostředky a způsoby v IT obvyklými).