From ... Path: archiver1.sj.google.com!newsfeed.google.com!newsfeed.stanford.edu!news.tele.dk!134.222.94.5!npeer.kpnqwest.net!nreader2.kpnqwest.net.POSTED!not-for-mail Newsgroups: comp.lang.lisp Subject: Re: handler-bind References: <87itj6fwf1.fsf@orion.bln.pmsf.de> Mail-Copies-To: never From: Erik Naggum Message-ID: <3198759540763430@naggum.net> Organization: Naggum Software, Oslo, Norway Lines: 35 User-Agent: Gnus/5.0808 (Gnus v5.8.8) Emacs/20.7 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Sun, 13 May 2001 16:19:04 GMT X-Complaints-To: newsmaster@Norway.EU.net X-Trace: nreader2.kpnqwest.net 989770744 193.71.66.150 (Sun, 13 May 2001 18:19:04 MET DST) NNTP-Posting-Date: Sun, 13 May 2001 18:19:04 MET DST Xref: archiver1.sj.google.com comp.lang.lisp:9953 * Kent M Pitman > Btw, LispWorks 4.1.20 disagrees with me, at least in implementation, not > sure about intent. It does: > > (handler-bind ((error #'(lambda (c) (break "Bar: ~A" c)))) > (handler-bind ((error #'(lambda (c) nil)) > (error #'(lambda (c) (break "Foo: ~A" c)))) > (error "Testing..."))) > > Foo: Testing... > > where I would have expected to break with "Bar: Testing...". * "Pierre R. Mai" > Both ACL and CMU CL seem to agree with LispWorks on that point, both > first breaking into the Foo: Testing break-loop, instead of proceeding > directly into the Bar: Testing break-loop... I remain uncertain what we are demonstrating here, but for what it might be worth, Allegro CL 6.0 breaks with "Bar: More Testing..." when running this snippet of code: (handler-bind ((error #'(lambda (c) (break "Bar: ~A" c)))) (handler-bind ((error #'(lambda (c) (error "More ~A" c))) (error #'(lambda (c) (break "Foo: ~A" c)))) (error "Testing..."))) while breaking with "Foo: Testing..." in the example quoted above, which does indicate that the next handler is not visible while in the handler, but somehow reinstated when searching for an applicable handler, like cond instead of like typecase. #:Erik -- Travel is a meat thing.