[plt-scheme] Weak boxes and uncollected values
Certain values, such as #t and fixnum integers, don't "vanish" from
weak boxes after garbage collection, even when there don't seem to be
any outside references.
An example interaction with mzscheme:
> (define A (make-weak-box 'symbol))
> (define B (make-weak-box (list 1 2 3)))
> (define C (make-weak-box (+ 1 2 3)))
> (define D (make-weak-box (not #f)))
> (map weak-box-value (list A B C D))
(symbol (1 2 3) 6 #t)
> (collect-garbage)
> (map weak-box-value (list A B C D))
(#f #f 6 #t)
The symbol and list are collected; the fixnum and boolean are not. Is
this the intended behavior? Is there a way to identify these values
beforehand, so this behavior can be anticipated?
--
Carl Eastlund