Thien-Thi Nguyen:
        (das-guardian (list cleanup-func object)))

 Here, you add the compound object (constructed using `list'),
 not just `object'.  Is that what you want do, really?


Ah, of course. Thank you very much. Also for the mysteriously
quick reply. :-)

I have now changed "add-guardian-object" into:

   (define das-guardians '())
   (define (add-guardian-object object cleanup-func)
     (set! das-guardians
           (remove (lambda (das-guardian)
                     (let ((guard ((cadr das-guardian))))
                       (and guard
                            (begin
                              ((car das-guardian) guard)
                              #t))))
                   das-guardians))
     (push! (list cleanup-func
                  (let ((guardian (make-guardian)))
                    (guardian object)
                    guardian))
            das-guardians))



And this seems to work. Great!



Reply via email to