Временами я сталкиваюсь с "особенностью", что Haskell соответствует только главам экземпляров, а именно,
instance (a ~ NewDataTyp b) => C a
теперь будет соответствовать любому типу, т.е. написание еще одного объявления экземпляра C
в вашей программе будет ошибкой, даже если оно не может конфликтовать из-за контекста a ~ NewDataTyp b
. Иногда это требует больших усилий для преодоления; мне пришлось перестроить сотни строк кода, чтобы избежать этого ограничения.
Существуют ли расширения языка или языки-потомки (Curry? Agda?), которые разработаны с более высоким приоритетом выразительности? Это может принести в жертву (а) открытость мира типовых классов (б) полиномиальное время проверки типов.
edit -- для тех, кто интересуется вопросом, эта страница также может быть интересна: http://www.haskell.org/haskellwiki/Future_of_Haskell