Podstawowy język Haskell jest naprawdę prosty. Pochodząc z tła OO, główną trudnością jest dostosowanie się do czysto funkcjonalnego paradygmatu.
Ucząc się „podstawowego” języka Haskell, zawsze brałem pod uwagę rozszerzenia językowe jako zabawki dla osób CS lub eksperymenty dla przyszłych wersji języka (jak from future import ???
w Pythonie).
Jednak kiedy zacząłem patrzeć na frameworki takie jak Yesod, okazało się, że wiele plików źródłowych wymaga rozszerzeń 3 i 4. Niektóre wyglądają dość prosto (StringOverload). Inne są naprawdę przerażające (GADT, Type Famillies, Template Haskell). Ich dokumentacja prowadzi do artykułów naukowych, co jest przerażające dla kogoś, kto spodziewa się „nowej” biblioteki.
Czy trzeba uczyć się rozszerzeń języka GHC, aby być produktywnym w Haskell? Gdybyś zatrudnił programistę Haskell do aplikacji produkcyjnej, czy poprosiłbyś o taką wiedzę?