[Haskell-cafe] Proposal to solve Haskell's MPTC dilemma

Stephen Tetley stephen.tetley at gmail.com
Fri May 21 03:52:58 EDT 2010


Hi Evan

EHC - Essential Haskell Compiler - is the 'family of compilers' that
UHC - Utrecht Haskell Compiler - is instance one of. The EHC family
starts with a simple Haskell subset and adds features building up to
(almost) Haskell98 for UHC and extended Haskell for some of the EHC
variations. This style of software development is sometime called
'feature oriented development' or 'software product lines', the ML
compiler MLPolyR is another compiler built as a family of variants.

UHC had a version 1.0 release last year. From the documentation it
doesn't look like UHC supports type class directives:

http://www.cs.uu.nl/wiki/bin/view/Ehc/UhcUserDocumentation

>From a bit of nosing around, I'm not sure that any of the EHC variants
support type class directives either. It does look like Helium
(Utrecht's simplified Haskell variant for teaching) supports them, and
Helium has certainly been released. That said, I've no association
with the Utrecht developers, so I'm not really qualified to say for
EHC, though I have studied its source a bit and grepping hasn't turned
up an answer. Incidentally, studying the source of EHC is probably the
best way to learn idioms and techniques for UUAG.


>From the 'Type Class Directives' paper here are some example directives:

never Eq (a -> b):
  functions cannot be tested for equality
never Num Bool:
  arithmetic on booleans is forbidden

disjoint Integral Fractional:
  something which is fractional can never be integral

close Similar:
  the instances of Similar are @insts at .

(Similar being an Eq like class that is available only for integers)

Best wishes

Stephen


More information about the Haskell-Cafe mailing list