> Yes. So to be clearer, Gambit’s runtime system keeps a weak reference
> to each will created with make-will. The weak reference is severed when > the will’s action procedure is executed, making the will unreachable. This
> allows the will object itself to be reclaimed after the action procedure is > executed.
Clearer indeed!
Just for the benefit of anyone following this (i.e. this is not a question), I inferred this in the gsi REPL: the weak reference to the will seems to be severed even if the action procedure has made the object reachable again (e.g. by setting a global variable to it). Now, even if you keep a strong reference to the will, its action procedure *won't* execute when the object becomes weakly reachable again.
> (define o (cons 'o 'o)) > (define w (make-will o (lambda (x) (println "saving o") (set! o x)))) > (set! o #f) > (##gc) saving o > (set! o #f)
> (##gc) > w #<will #3>