[racket-dev] Uninterned symbols in compiled code

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Sat Jul 7 08:48:05 EDT 2012

At Sat, 7 Jul 2012 08:42:24 -0400, Carl Eastlund wrote:
> On Sat, Jul 7, 2012 at 8:38 AM, Matthew Flatt <mflatt at cs.utah.edu> wrote:
> > At Fri, 6 Jul 2012 15:19:25 -0400, Carl Eastlund wrote:
> >> While I'm thinking about this -- since gensym in macros is a common
> >> error, is it possible we could fix it so that it works?  The unique
> >> marks on generate-temporaries's output are marshalled in a way that
> >> ensures marks in one module are consistent with others, I believe by
> >> tracking the originating module.  Would it be possible to do the same
> >> thing with uninterned symbols in compiled code, keeping around a
> >> reference to the originating module to preserve eq?-ness?
> >
> > I think this could be made to work in the case of use a gensym for an
> > identifier. Different bytecode loads would still produce different
> > gensyms, but an identifier based on a gensym could still get its
> > binding from the originating module in the same way as an identifier
> > from `generate-temporaries'. I'll try that out sometime.
> 
> Okay -- to be clear, gensym in identifiers might work, but gensym in
> quoted literals would not?

Right.


Posted on the dev mailing list.