>>14I agree a bit with you.
E.g. TypeFamilies provide crippled typelevel lambda's. Why not add the real thing? Now you get BlaType is not injective errors if you do something minor interesting with them.
But they fixed functional dependencies, so it evens out there. And they added some interesting generalizations over type classes.
DataKinds (and PolyKinds as well) are fucking useless without KindSignatures and also they fucked up by only providing one Universe. Where normally you will infinite universes. values : types : kinds : sorts : ..... Haskell only has values:types:kinds:sorts end of story.
Other problems is type equality from GADTs. Haskell doesn't allow you to prove type inequalities, which makes your code much more complex than needed.
On the other hand, haskell is quite practical and one of the reasons is the type extensions. Extensions, which work, get merged into the language. Type extensions which fail get removed after a while.