On Mon, Dec 15, 2008 at 11:57 PM, Alejandro Forero Cuervo <[email protected]> wrote: > > I have a question about finalizers. > > If you run the following in csi: > > (define x (list 1 2 3)) > (begin (set-finalizer! x (lambda (o) (format #t "Delete: ~A~%" o))) #t) > (define y (list 4 5 6)) > (begin (set-finalizer! y (let ((p x)) (lambda (o) (format #t "Delete: ~A: > ~A~%" o p)))) #t) > (gc #t) > (set! x #f) > (gc #t) > > Why do you get "Delete: (1 2 3)", the output of the finalizer for x, > even though the finalizer for y depends on the value of x? > > Am I misunderstanding the way finalizer procedures get executed? >
A bug. The finalizer itself is not considered in the calculation whether something is still referenced or not (I think). I have to investigate. cheers, felix _______________________________________________ Chicken-users mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/chicken-users
