| 1 | | 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. |
| | 1 | 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, rank-N, 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. |
| | 2 | |
| | 3 | Ideally, you will also implement one or more of the extensions noted above. There are opportunities to engage with cutting-edge type techniques like constraint-based resolution, or just to go for plain and simple H-M-style. |