[racket-dev] Uninterned symbols in compiled code

From: Carl Eastlund (cce at ccs.neu.edu)
Date: Sat Jul 7 08:42:24 EDT 2012

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?

--Carl

Posted on the dev mailing list.