WebHome
-
UHC
-
EHC
-
Documentation
-
Features & Status
-
EH examples
-
Feedback
-
News
-
FAQ
Related
-
Ruler
-
Shuffle
-
uulib & uuagc
Old Stuff
-
Previous WebHome
-
AFP2004
Center
Master Program
Center
Home
Courses
People
Projects
Page
Edit Page
Rename Page
Attach File
Printable
Wiki Source
More ...
Web
Recent Changes
Notify Service
News
Page Index
Search
More ...
Wiki
About TWiki
Text Formatting
Registration
Change Password
Reset Password
Users
Groups
Log In
or
Register
Web Home Before 20070921
Ehc
%TOC% ---++ About EHC, a more-or-less Haskell Compiler As an executive summary, the E in EHC stands for * Essential. Because essential characteristics of Haskell are described. * Extended. Because some aspects of Haskell are done in a more general or extended way. * Educational. Because the description is supposed to be learned from, hence * Explained. Because design, bits of theory and implementation go hand in hand. * Evolutionary. Because the final compiler evolves via intermediate steps. * Elementary. Because the intended audience need not be thoroughly familiar with (e.g.) type systems. * Experimental. Because of some extensions we think they useful, but as with any experiment... * Engineered. Because a series of working compilers are the focal point of explanation as well as theory. The HC in EHC stands for Haskell Compiler, which it isn't really, but is as much Haskell as possible. ---++ Documentation ---+++ On EHC #PhD * A table of [[Language Features]] currently implemented in EHC trunk - for .eh syntax and .hs syntax - and their implementation status * [[Atze.WebHome][Modelling Scoped Instances with Constraint Handling Rules]] (paper) * [[Atze.WebHome][The Structure of the Essential Haskell Compiler]] (paper) * [[Atze.WebHome][Exploiting Type Annotations]] (paper, technical report) * !PhD thesis (of [[Atze.WebHome][Atze Dijkstra]]) [ [[%ATTACHURL%/20051006-2023-phd-paper.pdf][print version]] (also [[http://igitur-archive.library.uu.nl/dissertations/2005-1115-200019/index.htm][available]] at the 'Igitur' archive of the University), [[%ATTACHURL%/20051006-2023-phd.pdf][extended version]], [[%ATTACHURL%/20051010-Front72dpi.jpg][cover frontpage]] ] * The follow-up of the thesis grows along with the project. It can be downloaded from the [[Ehc.Download][download]] page. * [[Atze.WebHome][Ruler: Programming with Type Rules]] (included in !PhD thesis) * [[Atze.WebHome][Making Implicit Parameters Explicit]] (included in !PhD thesis) * An [[%ATTACHURL%/20050107-eh-intro.pdf][overview]] of EHC given at the [[http://www.cs.rug.nl/~terlouw/fpdag2005.html][Landelijke FP-dag 2005]] (dutch for National Functional Programming Day). * The [[Ehc.Examples][examples]] page shows for each version of EH some typical programs (from the test set). * See also [[Atze.WebHome][publications by Atze Dijkstra]] * [old] A description of the first part, that is compilers 1-4 is available as a [[http://www.cs.uu.nl/research/techreps/UU-CS-2004-037.html][technical report]]. ---+++ On the used tools * Use of the AG compiler (incorporated in the UUST library) is described in the [[Center.AttributeGrammarSystem][manual]]. Other sources of documentation and examples are * The [[#PhD][PhD thesis]] contains an AG tutorial. * The [[%ATTACHURL%/AgTutorial.pdf][AG tutorial]] held at the AFP2004. * The [[Ipt.CourseLiterature][lecture notes]] of [[Ipt.WebHome][Implementation of Programming Languages]]. * The following tools are part of EHC but can also be used independently. Download of sources and documentation is part of [[Download][EHC download]] * [[Ruler][Ruler]], a tool for specifying type rules. * [[Shuffle][Shuffle]], a tool for source fragment manipulation ---++ Download * See the [[Ehc.Download][download]] page for a stable version. * The current development version is available as a svn generated [[https://svn.cs.uu.nl:12443/dist/EHC/EHC-trunk-EHC.tar.bz2][distribution]]. You can also browse the [[https://svn.cs.uu.nl:12443/repos/EHC/][repository]] directly. ---++ Installation and use * See the [[Ehc.Download][download]] page for installation instructions. * The [[HUT.WebHome][Haskell Utrecht Tools]] are required. * Download [[http://www.cs.uu.nl/wiki/HUT/Download][Distributions of the library]] * A recent version of this library is also available in the subversion uust-repo: <verbatim> % svn checkout https://svn.cs.uu.nl:12443/repos/uust-repo/uulib/trunk uulib % cd uulib % autoconf % ./configure % ghc --make Setup.hs -o setup -package Cabal % ./setup configure % ./setup build % ./setup install </verbatim> * The Utrecht AG Compiler is required. See the [[http://www.cs.uu.nl/wiki/HUT/Download][HUT download page]] for a version that can be compiled by ghc. Alternatively, the AG compiler can be build from SVN (requires an already existing AG compiler) (20070912 note: EHC uses experimental UUAGC features, hence the SVN version is required): <verbatim> % svn checkout https://svn.cs.uu.nl:12443/repos/uust-repo/uuagc/trunk uuagc % cd uuagc % autoconf % ./configure % ghc --make Setup.hs -o setup -package Cabal % ./setup configure % ./setup build % ./setup install </verbatim> * The file README contains the install instructions. * We welcome [[Ehc.FeedBack][feedback and bug reports]]. * This fall (20070912) the seminar on [[TS.WebHome][Type Systems]] maintains a page with [[TS.EhcParticularities][encountered problems]]. ---++ Participate with the development of EHC * Obtain the source code available on the subversion repository: [[https://svn.cs.uu.nl:12443/repoman/info/EHC]]. 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 ---++ Related (student) projects * [2007] [[TS.WebHome][Type Systems]] projects are based on EHC. * [completed, 2007] Use of [[Ehc.GvdGeest][Constraints for Type Class Extensions]], by Gerrit van den Geest. * [completed, 2005] Exceptions in GRIN, by Christof Douma. * [done, 2006] Some [[Eifl.WebHome][EIFL]] (Efficient Implementation of Functional Languages) seminar projects use EHC as a frontend. * [completed] Thesis project by Students.WouterSwierstra to incorporate Attribute Grammar fragments in EHC. --- -- Main.AtzeDijkstra - %REVINFO{"$date"}%