> > >>do: > > >> <body> > > >> until <cond> > > >> > > >>But I'm sure that has problems too. > > > > [Raymond Hettinger] > > > That looks nice to me. > > [Nick Coghlan] > > And this could easily be extended to allow code both before and after > > the 'until', giving a fully general loop: > > > > do: > > <body-1-or-more-times> > > until <cond> > > <body-0-or-more-times> > > else: > > <on-natural-loop-exit> > > Which is exactly like PEP 315 except there 'until' must be spelled > 'while not' and the while is properly indented. > > (I'm still not sure whether BJörn *meant* the 'until' to be indented > or whether he simply made a mistake; his proposal resembles a Pythonic > version of Pascal's repeat-until, which would have an unindented > until-clause.)
Sorry, I should have made that clear. I *meant* for 'until' to be indented. I envisonaged it to be treatened similar to how the raise, pass and return statements work. Those statements are indented in a suite and they always end the current block. Well, technically you can write stuff like this: suite: <block> raise Exception <block2> But 'block2' will always be dead code. Emacs, for example, always dedents when you write any of those three statements. The reason I suggested was not so that you could extend it to fully general loops like Nick suggested (which I can't comment on because I never use else: in looping constructs and always keep the condition check and the top or bottom), but because I thought that a dedented 'until' would be very hard to parse and in general look very unpythonic: do: <block> until <cond> Written like this it is not very obvious that the 'unil' is part of the do-until suite. I also imagine it to be difficult to parse and it breaks the rule that suites end when there is a dedentation. So, IMHO using an indented 'until' is the least evil of a number of evils. > Why are you so excited about having until indented? You didn't give > any examples with multiple occurrences. A single occurrence works just > fine unindented, as PEP 315 has already shown. > > The indented until sounds like unnecessary syntactic sugar for 'if X: > break' -- not very Pythonic. Yes, but grepping the stdlib produces over 300 hits for "while 1:" and "while True:" combined. Some of those a "if <cond>: break" in the middle and some would be better written as generators, but lots of them would be rewritten as do-while's. So I think there is more than enough use cases for syntactic sugar for do-while loops. -- mvh Björn _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com