[plt-dev] symbol->string and mutability

From: Carl Eastlund (cce at ccs.neu.edu)
Date: Thu Jun 18 16:38:56 EDT 2009

On Thu, Jun 18, 2009 at 4:34 PM, Matthew Flatt<mflatt at cs.utah.edu> wrote:
>> >
>> > No --- symbols and keywords are GCed, so a weak hash table would work.
>> >
>> > (And weakness in hash tables isn't about whether you could synthesize
>> > the key. We have `equal?'-based hash tables with weak keys, after all.)
>> I see.  I tried to demonstrate this one way or another to myself with
>> a weak box containing a symbol and a call to collect-garbage, and the
>> box never "emptied".  Perhaps that experiment was not conclusive;
>> maybe collect-garbage doesn't guarantee emptying of all weak boxes, or
>> I had a reference to the symbol lying around somewhere I didn't know
>> about.
> I tried this in the MzScheme and DrScheme (module language) REPLs:
>  > (define b (make-weak-box 'not-used-elsewhere))
>  > (weak-box-value b)
>  not-used-elsewhere
>  > (collect-garbage)
>  > (weak-box-value b)
>  #f
> Did you try the same thing?

Nope.  I put the first line in the definitions window, which of course
put the symbol in the compiled version of the module, thus preventing
it from being GC'd.  Oops.


Posted on the dev mailing list.