
Daniel Trstenjak
I don't think that it's possible to have intuitive understandable error messages for something as complex as a programming language like Haskell.
It isn't related to complexity, but just to certain type system features, in particular type classes and rank-n types. Confusing error message in the context of the former are the most common ones as explained in my answer. The latter can be even more confusing, when the compiler starts complaining about types that aren't polymorphic enough or even about "escaping type variables". But I'd say most people observe those messages only when they try to use ST in an unsafe way. Greets, Ertugrul -- Not to be or to be and (not to be or to be and (not to be or to be and (not to be or to be and ... that is the list monad.