[Haskell-cafe] A backwards-compatible record proposal
Bernard James POPE
bjpop at csse.unimelb.edu.au
Sat Aug 19 08:38:15 EDT 2006
On Sat, Aug 19, 2006 at 09:21:34AM +0100, Brian Hulley wrote:
> Therefore I think the desugaring would need to take place in the compiler
> so the compiler could avoid exporting the compiler-generated instances when
> the fields are not present in the module export list.
I'm not entirely sure I understand you here, but something to consider is
how well the sytem can be handled by something which is not a compiler,
but a code transformer. Something like Hat or buddha.
For tools like these, it is important that a desugared program is still a
valid (source level) program. (Haskell 98 is close to this, but not 100%
Desugaring sometimes introduces new code into a program (for instance
the deriving rules), a program transforming tool will most likely have to
apply its transformation to that introduced code. Therefore, to transform
a Haskell program you have to desugar it (somewhat) first. We want
the result to remain a valid Haskell program, so it can be accepted by
an ordinary compiler.
(Please forgive me if your scheme already allows this).
More information about the Haskell-Cafe