.
Last update of this page at 18 Apr 2010. The content of this page will partially move to the
.
This page contains a detailed todo list for the first release of EHC as UHC, that is, Haskell98.
The todo list is separated in 'must do' and 'nice to do'.
contains a more high level description of what is present and missing in EHC.
The bug database (see
) also describes problems, some of which are to be solved after a first release, some before.
Whenever relevant, the todo list refers to bug database issues.
| Issue | Work amount/severity | Status | Done |
| Exceptions (makes Prelude easier) | major | | 20070129 |
| Parser for types still has ambiguities, should be done as for expressions | minor | | 20070131 |
| Extensible records require checking (has been ignored lately) | minor/medium | | 20070306 |
| Context reduction has become too complex because of explicit/implicit experimentation, needs simplification. It breaks on Prelude numeric hierarchy | major (can be postponed, unless it severely breaks) | leftover: higher order | 20070327 (now CHR based) |
| Error reporting should include reference to program text (line nr info) | medium/major | | 20070401 |
| Case match on non data types, requires expansion into "==" comparisons | medium | | 20070508 |
| Coercions for tuples are too agressively inserted (e.g. in body of snd) | minor | | 20070515 |
| Performance: AG generated code is inefficient, work by Joost Verhoog solves it but must be made working | major | | 20070701 |
| Performance: avoidance of unnecessary laziness (toplevel compiler driver, AST's, etc) | major | | 20070701 |
| FFI types must be fully beta reduced when used to derive type dependent lowlevel interface | minor | | 20070819 |
| Check on duplicate introductions of name bindings | medium | | 20070912 |
| Enum(toEnum) deriving, requires additional tables because of tag assignment based lexicographic ordering of constructors | medium | | 200710xx |
| IO primitives | medium | | 20080109 |
| Throwing an exception from the RTS initiates a new interpreterloop which never returns | minor | | 20080131 |
| Float/Double type + primitive support | medium | | 20080220 |
| Covariance/contravariance analysis required for datatypes, otherwise e.g. [forall a.a->a] <= [Int->Int] (inconsistently) fails in some higher-ranked situations | major | | 20080411 |
| Read(readsPrec) deriving | medium | | 20081001 |
| Prelude, likely to be derived from Hugs's | major, most other todo's are part of this | mostly done | 20081001 |
| Reusability: fine grained reuse of EHC framework by aspect (new) + by variant (already there) | major | | 20081106 |
| Prelude: Eq (etc) instances for tuples missing | minor | | |
| Name analysis occasionally too aggressively puts class + instances + datatypes in 1 binding group | minor | | |
| Kinds of quantified type variables are not stored in type | major | | |
| FFI spec (for Prelude) | medium | | |
| Skolem type variables may escape but get requantified, allowing too much polymorphism | medium | | |
| Manual for EHC + tools, system doc | major | | current |
| GBM: check on stack size availability at start of function | medium | | |
| default mechanism, most likely use Haskell Prime's proposal | medium/major (can be postponed?) | | |
| Run nofib test suite | medium | | |
| Case match with only a an identifier in 1 pattern is strict, should be lazy | minor | | |
| Check on 'class D a where op :: C a => a -> ...' where op's signature refers to a in a predicate | minor | | |
| EHC home made garbage collector | major | current | |