The EHC pages are to be considered background reading material to the UHC (Utrecht Haskell Compiler), so please start there if you not already did.
The EHC pages will gradually become obsolete, useful content will move to the UHC pages
What is UHC? And EHC?
stands for Utrecht Haskell Compiler
stands for Essential Haskell Compiler, a series of compilers, of which the last one is UHC.
UHC/EHC as a combination aims to be
- A full Haskell98 compiler with extensions
- A platform for experimentation with Haskell and type systems
EHC is not just a single compiler, but a whole series of compilers. Each compiler in this series adds some Haskell features or extensions to the previous compiler. It is specified as a delta to its predecessor.
The last compiler in this sequence is branded as UHC.
Status of EHC/UHC
for an extensive overview of the work still to be done before we can release a beta version UHC for the first time,
for an overview what is and is not implemented in general.
A brief summary of where we are follows:
-  UHC
- We are almost reaching the first release!
EHC compiles and runs on MacOS X Intel, WinXP and some Linux versions.
Although we currently guarantee nothing (remember we have not yet released UHC), you can certainly help us by trying out EHC and tell us
what went wrong (or right!).
Download, build, run and install EHC/UHC
Download, build, install, run
See the ehc manual
(under construction) for installation
Experiment and play
Ehc allows itself to be built in different configurations. Ehc is constructed as a sequence of steps, but independently of this various aspects of the full compiler can be omitted so as to allow experimentation. Ehc.Shuffle is used to configure this. As part of the documentation
an explanation on how to experiment and play with the system is available.
Reading about EHC
Participate in the development of EHC
- Obtain the source code available on the subversion repository: https://subversion.cs.uu.nl/repos/project.UHC.pub/. Contact the repository owner to get write access.
- Depending on the type of development, choose either the trunk or create a branch:
- The trunk: bugfixes, main development
- Branching: student projects
Local (at UU) projects
-  Mart Kolthof, designing an editor in Proxima for Shuffle, Master thesis.
-  Type Systems projects are based on EHC.
-  John van Schie, Using LLVM as a back-end for EHC, Master thesis.
-  Gerrit van den Geest, Use of Constraints for Type Class Extensions, Master thesis.
-  Some EIFL (Efficient Implementation of Functional Languages) seminar projects use EHC as a frontend.
-  Thesis project by WouterSwierstra to incorporate Attribute Grammar fragments in EHC.
-  Christof Douma, Exceptions in GRIN, Master thesis .
- 22 May 2010