On Fri, 17 Apr 2009 20:45:30 -0700, Mensanator wrote: >> Nevertheless, somebody *has* implemented such functionality in Python. >> Not just GOTO, but also COMEFROM. > > Really? Well, _I_ for one, won't be beating a path to his door.
Well you should. It's very clever code, and the way he solved the "problem" is intriguing. It was also a great April Fools joke. For reference, here's that URL again: http://entrian.com/goto/ >> GOTO in Pascal required that you defined a label in your code, then you >> could jump to that label. You can't jump to arbitrary parts of the >> program, only within the current procedure. > > And I deliberately made no effort to learn how to use them. And I never > had a situation I couldn't solve the "proper" way. You need to distinguish between the use of unstructured jumps like Basic- style GOTOs and COMEFROMs, which can jump anywhere, and the use of structured GOTOs and jumps that have well-defined meanings. GOTO, after all, is just a jump, and we use jumps in Python all the time: raise Exception break continue if... elif... else... for... else... etc. Often -- well, sometimes -- you can write cleaner, simpler code with GOTO than without. Fortunately, 95% of those cases can be dealt with a break or continue in a loop. In a high level language, GOTO is never necessary and rarely useful, but it is useful on occasion. Any time you find yourself creating a flag variable just so you can skip a code block, or enter a code block, then a structured GOTO *could* be a clean replacement. But probably isn't. (This is not a call for Python to develop a GOTO, just a defence that they aren't always the Wrong Thing.) COMEFROM on the other hand is just the purest evil imaginable. -- Steven -- http://mail.python.org/mailman/listinfo/python-list