[racket-dev] Uninterned symbols in compiled code

From: Carl Eastlund (cce at ccs.neu.edu)
Date: Fri Jul 6 15:19:25 EDT 2012

On Fri, Jul 6, 2012 at 3:11 PM, Carl Eastlund <cce at ccs.neu.edu> wrote:
> On Fri, Jul 6, 2012 at 3:06 PM, Matthew Flatt <mflatt at cs.utah.edu> wrote:
>> At Fri, 6 Jul 2012 12:59:34 -0600, Matthew Flatt wrote:
>>> As I try to make an example illustrating problems, I see that Racket is
>>> more resistant to problems created by `gensym' than I expected.
>>
>> Ah --- one more level of indirection demonstrates the sort of trouble
>> that I expected. If you compile only "a.rkt" and "b.rkt" below with
>> `raco make b.rkt', then `racket c.rkt' doesn't work.
>
> Thanks, Matthew, having a setup that creates a predictable error is
> illuminating.

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?

--Carl

Posted on the dev mailing list.