This page is part of the web mail archives of SRFI 34 from before July 7th, 2015. The new archives for SRFI 34 contain all messages, not just those from before July 7th, 2015.
Date: Tue, 13 Aug 2002 18:40:54 +0100 From: Tony Garnock-Jones <tonyg@xxxxxxxxxxxxxxx> But "finally" isn't dealing with cleaning up on stack-unwinding - it's dealing with cleaning up on exception-raising (which doesn't involve any stack-unwinding at all, unless an individual exception-handler procedure decides to do a throw to a different dynamic environment). It doesn't make sense to me to have "finally" clean up when an exception is raised and no stack unwinding occurs. Suppose we build continuable exceptions on top of SRFI-34 and add (finally <exp> <body>) that evaluates <exp> whenever an exception is raised in <body> and when <body> returns. Then if we write (with-handler (lambda (c) (if (continuable? c) (continue c 10) (raise c))) (finally (begin (display "exiting") (newline)) (raise (make-continuable-exception)))) it will write "exiting" twice, once for the raise and once for the normal return. When would you use such a "finally"? -Richard