Базовый язык Haskell действительно прост. Исходя из опыта OO, основная трудность заключается в адаптации к чисто функциональной парадигме.
Изучая «базовый» язык Haskell, я всегда рассматривал языковые расширения как игрушки для людей CS или как эксперименты для будущих версий языка (как from future import ???
в python).
Однако когда я начал изучать веб-фреймворки, такие как Yesod, я обнаружил, что для многих исходных файлов требуется расширение от 3 до 4. Некоторые выглядят довольно просто (StringOverload). Другие действительно пугающие (GADT, Type Famillies, Template Haskell). Их документация связана с исследовательскими работами, что пугает тех, кто ожидает «просто» новой библиотеки.
Нужно ли учить расширения языка GHC, чтобы быть продуктивным в Haskell? Если бы вы наняли разработчика на Haskell для производственного приложения, спросили бы вы об этом?