I think that's a good risk to be aware of. One nice thing about the architecture under discussion, though, is that it shares much more code than the previous design. I wasn't a previous user of External Core, but it seems to me that it was allowed to bit-rot in part because it duplicated many things that existed elsewhere in the compiler (for instance, a data type representing types), which then became outdated when the main compiler data structures changed (such as when FC was introduced).

In Simon's proposed design, the HsType data type, for instance, is shared between Haskell and External Core, which makes sense because the two languages have a very similar type structure. However, since they have very different term structures, there would be distinct HsExpr and ExtCoreExpr data types. It would be very hairy, in just the way you're describing, if we used HsExpr to represent ExtCoreExpr, since HsExpr is such a richer language. Checking that an instance of HsExpr is valid External Core would be quite a pain. Checking that an HsType is valid for Exernal Core, however, seems like it should be pretty easy.

I could easily be missing some complications, though. I'm open to further suggestions.

Aaron

On Dec 6, 2006, at 6:45 AM, Kirsten Chevalier wrote:

Message: 4
Date: Tue, 5 Dec 2006 16:00:28 +0000
From: Simon Peyton-Jones <[EMAIL PROTECTED]>
Subject: RE: Replacing Ty in ExternalCore with IfaceType
To: Aaron Tomb <[EMAIL PROTECTED]>,    "[EMAIL PROTECTED]"
        <[EMAIL PROTECTED]>
Message-ID:

[snip]
* Be careful to specify the sub-language of HsSyn that is ExtCore


This seems like asking for trouble, too, although I guess it depends
on what you mean by "be careful" and "specify". I can imagine bugs
potentially sneaking in when somebody makes a change to GHC without
thinking about ExtCore (which is exactly what happened in the past),
but I suppose that it's possible to implement some sort of
ext-core-lint phase or something that checks that the ExtCore that GHC
is generating is consistent with the specification. But, you would
want to make sure that that phase was actually enabled when the test
suite gets run.

Cheers,
Kirsten

--
Kirsten Chevalier* [EMAIL PROTECTED] *Often in error, never in doubt "It ain't no hassle, it ain't no mess / Right now it's the only power that I possess / these businessmen got their money, they got their instruments of
death / but I can make life, I can make breath" -- Ani DiFranco

_______________________________________________
Cvs-ghc mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/cvs-ghc

_______________________________________________
Cvs-ghc mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to