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?

Alejo.
http://azul.freaks-unidos.net/


_______________________________________________
Chicken-users mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to