DDC doesn't aim for Haskell 98 compliance - its really a superset of a
subset of it - but I've followed Haskell syntax and philosophy where
ever possible. The compiler is written in Haskell and I want DDC to
support as much of it as possible to make its eventual boot-strapping
easier. There's much more common ground between Disciple and Haskell
than say, ML and O'Caml, or Haskell and Clean.
Most of the expression syntax is there eg: function binding, lambdas,
let, where, pattern matching, case expressions, pattern guards, data
type definitions, class and instance definitions etc etc.
For the alpha version at least, the main deviations are:
- dictionary passing is not finished.
- you'll need to put region annots on recursive data type defs as
the elaboration isn't quite finished.
- it uses strict evaluation as default
- field projections are different
- no monadic desugaring in do notation.
- no irrefutable patterns yet.
The rest is all Haskell 98 (minus all the effect typing extensions, of
For the alpha2 release I'm hoping that most straight-up Haskell 98
programs will compile with it after some cosmetic modifications:
mostly adding the suspension operator where appropriate, and using the
new field projection syntax.
Can you elaborate on "a significant number of Haskell programs"? Do
you expect that DDC can compile any Haskell (98?) program except some
weird corner cases, or are you aware of a particular class of Haskell
programs it currently can't compile?
(I'm asking in order to find out whether DDC would potentially be
useful for my work, not so as to question whether it should be on
haskell.org (I don't care about that :-))
Tim Chevalier * http://cs.pdx.edu/~tjc * Often in error, never in
"It's easy to consider women more emotional than men when you don't
consider rage to be an emotion." -- Brenda Fine
Haskell-Cafe mailing list