[Yhc] Re: HEADS UP: Broken Compiler

Neil Mitchell ndmitchell at gmail.com
Mon Aug 6 13:26:01 EDT 2007


Hi

We've fixed most things, of note:

* Yhc now compiles PosLambda (nhc's internal thingy) to Core, which is
then compiled to ByteCode. This means that Core can now be compiled to
ByteCode. We should have an optimising Haskell compiler shortly - the
optimiser was written over a year ago, now we can switch it on.

* We use Data.Derive instead of DrIFT for the binary instances.

* CoreInt i is now CoreLit (CoreInt i). Ditto for CoreStr/CoreChr and
all other literals.

* CoreCase has moved from:

CoreCase CoreExpr [(CoreExpr,CoreExpr)]

to:

CoreCase CoreExpr [(CorePat,CoreExpr)]

data CorePat = PatCon CoreCtorName [CoreVarName]
                    | PatDefault
                    | PatLit CoreLit

It should reduce the number of errors, and special cases in the code.
In going through and modifying the Yhc.Core libraries, I encountered
at least 4 places where the old code was broken in subtle ways because
of the poor representation of patterns.

To ease the transition I have prodivded patToExpr and exprToPat, which
should make it relatively painless.

Still broken:

* One test (x2n1) is known to run out of memory, the reasons are
unknown, but are being tracked down.

* The buildbots could do with a fullclean.

If anyone needs any help converting their code in light of these Core
changes, please email me. With these changes, I feel we are
increasingly verging on the Core language that will last a long time!

Thanks

Neil


More information about the Yhc mailing list