This page is left here as a todo list, but not further maintained.

Last update of this page at 18 Apr 2010. The content of this page will partially move to the status section of the ehc manual.

These (currently incomplete) tables relate to the latest revision on the Subversion trunk, at the time of writing.

Y means a feature is present, Y/N (or YN) means work on it is underway but it is half-finished, N means it is not present but it will be, n ditto but one can live without, NN means it is not present and most likely never will be. Please note this answer in the FAQ.

Haskell 98 features

Feature .eh status .hs status
Modules NN Y
Type synonyms Y Y
...with arguments Y (use type lambdas) Y
Infix operators at type level NN N
Turning infix type constructors into prefix type constructors Y (use type lambdas) N
newtype declarations N Y
n+k patterns NN NN
Prelude NN Y (details are missing)
deriving construct NN Y
default construct N N
Irrefutable patterns N Y/N
Automatic binding groups detection N (each let forms a DIY binding group) Y
Strictness flags N n
Literate Haskell source format NN Y/N (only \begin{code}...\end{code})
Infixity of operators influences parsing of expressions, as described in the report NN N

Extended features

Feature .eh status .hs status
Type lambdas (undocumented?) Y N
Automatic destructor deriving buggy N
Polymorphic kind inference Y Y
Explicit kinding Y Y/N
Explicit implicit parameters Y Y
Higher ranked polymorphism Y Y
Extensible records YN YN
Multiparameter type classes Y Y
Functional dependencies N N
Lexically scoped type variables Y (introduced in patterns) Y
Existential quantification Y Y
Partial type signatures (denotated with dots ...) Y Y/N

Some combinations are not yet fully dealt with:

Feature combination .eh status .hs status
Type classes & data types, eg data C a => D a = ... YN YN
Existential quantification over type classes, eg exists a.C a => a YN YN
Multiparameter type classes and quantification over subset of involved type variables YN YN

Runtime system, backend, and use

The runtime system (RTS) is independent of the frontend, so the status is not split up into .eh and .hs status.

Feature status
Separate compilation Y
Mutual recursive modules N
Integer type Y (via GMP)
Float types Y
Exceptions Y
Threads N
Foreign function interface Y/N
GRIN based C backend with global optimizations Y/N
GRIN based LLVM backend with global optimizations Y/N
GRIN based C interpreter, per module compilation Y
GRIN based interpreter (written in Haskell, for testing purposes) Y
Garbage collection Y (Boehm GC, EHC gc in development)

Current work [on/after 9 Jan 2008]

  • Atze Dijkstra: Haskell frontend (in general: make it Haskell), GRIN based C interpreter
  • Jeroen Fokker: GRIN backend
  • Arie Middelkoop: Ruler system
  • John van Schie: LLVM backend

Future work

Dynamic variables are partially implemented.

GADTs are not currently supported - but there is an experimental stage to support GADTs, which now needs updating to compile against the current codebase. Volunteers?
Topic revision: r15 - 18 Apr 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