Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!wuarchive!uunet!mcsun!ub4b!kulcs!hera.cs.kuleuven.ac.be From: bimbart@hera.cs.kuleuven.ac.be (Bart Demoen) Newsgroups: comp.lang.prolog Subject: Re: block and exit_block Message-ID: <3946@n-kulcs.cs.kuleuven.ac.be> Date: 14 Jun 91 12:55:23 GMT Sender: news@cs.kuleuven.ac.be Organization: Dept. of Computer Science (K.U.Leuven) Lines: 19 Originator: bimbart@hera.cs.kuleuven.ac.be In <6245@goanna.cs.rmit.oz.au> ok@goanna.cs.rmit.oz.au (Richard A. O'Keefe) writes > If something called catch/throw *does* undo my variable bindings, I am > going to be _very_ annoyed, and I will write nasty letters to the > vendor in question for providing me with a useless implementation of > non-local exit. catch/throw as currently defined by WG17, undo the variable bindings; still, that doesn't make them useless for an alternative SUCCESS continuation, because through the ball you 'throw' and its unification with the catcher, you can pass any information from deep down, higher up; e.g. var(X), catch((X=1, throw(X)),X,true) => X == 1 it doesn't look very nice, but at least you have the option Bart Demoen