Typing Haskell in Haskell
Last updated: Thanksgiving day, November 23, 2000
Haskell benefits from a sophisticated type system, but implementors, programmers, and researchers suffer because it has no formal description. To remedy this shortcoming, we present a Haskell program that implements a Haskell typechecker, thus providing a mathematically rigorous specification in a notation that is familiar to Haskell users. We expect this program to fill a serious gap in current descriptions of Haskell, both as a starting point for discussions about existing features of the type system, and as a platform from which to explore new proposals.
The source code for the type checker is derived from exactly the same source as the code shown in the paper, but it also contains quite a lot of extra code for testing and printing. So, as long as I do my job properly, you can be sure that (a) what you see in the paper actually works, and that (b) the code and the paper are consistent with each other! The source code is available in two different formats:
Several people have asked me if I have a version of Typing Haskell in Haskell that works with multiple parameter classes. In fact, I have a couple. Here's the one that is closest to the Novmber 23, 2000 release as a gzipped tar file: thih-multiparam.tar.gz.
Comments, suggestions, and bug reports are all welcome; please contact me at firstname.lastname@example.org.