Legend:

The implementation of type inference in yhc (also used in nhc98) is occasionally incorrect, always difficult to understand and modify, and entirely undocumented. As a result, there is no hope of extending it to deal with multi-parameter type classes, functional dependencies, associated types, GADTs, or any of the other exciting and widely-used type-system extensions. The solution - rip it out and replace it completely. There are a few key requirements: it must be maintainable, it must be correct, it must give reasonable error messages. Speed is not a goal.