You are here: UUCS>Ehc Web>WebHome (22 May 2010, AtzeDijkstra)EditAttach

20100922 The EHC pages will gradually become obsolete, useful content will move to the UHC pages

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.

What is UHC? And EHC?

UHC stands for Utrecht Haskell Compiler. EHC 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

See FirstRelease for an extensive overview of the work still to be done before we can release a beta version UHC for the first time, and LanguageFeatures for an overview what is and is not implemented in general. A brief summary of where we are follows:

  • [20090415] 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 and troubleshooting.

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

See documentation

Participate in the development of EHC

  • Obtain the source code available on the subversion repository: 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

Cooperation, Projects

Cooperation projects

Local (at UU) projects

Completed projects

  • [2009] Mart Kolthof, designing an editor in Proxima for Shuffle, Master thesis.
  • [2007] Type Systems projects are based on EHC.
  • [2007] John van Schie, Using LLVM as a back-end for EHC, Master thesis.
  • [2007] Gerrit van den Geest, Use of Constraints for Type Class Extensions, Master thesis.
  • [2006] Some EIFL (Efficient Implementation of Functional Languages) seminar projects use EHC as a frontend.
  • [2006] Thesis project by WouterSwierstra to incorporate Attribute Grammar fragments in EHC.
  • [2005] Christof Douma, Exceptions in GRIN, Master thesis .

-- AtzeDijkstra - 22 May 2010
Topic revision: r92 - 22 May 2010, AtzeDijkstra

This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding UUCS? Send feedback