[Python-ideas] Updating PEP 315: do-while loops

Arnaud Delobelle arnodel at googlemail.com
Sun Apr 26 22:58:40 CEST 2009


On 26 Apr 2009, at 21:20, Larry Hastings wrote:

>
> Anyway, this is one reason why I like the "do:" statement I  
> proposed.  (The other one--the one where I also proposed "continue  
> if" and "break if".  But given your reaction to those let's ignore  
> 'em for now.)  This isn't *pure* sugar--it's a mildly novel flow  
> control construct for structured programming.  Certainly Python  
> doesn't have anything like it right now; "while True:" isn't an  
> exact match (and "while False:" is equivalent to "if 0:").  My "do:"  
> would allow spelling do/while as:
>
>   do:
>       something()
>       if condition: continue
>
> I think that's a reasonable do/while, and so economical: we only  
> added one new keyword.  This form of "do:" has other uses too, as  
> per my previous email.
>
> Not that I expect this syntax to take the world by storm.

It's funny because I had something like this in mind when I myself  
suggested 'break if ...' and 'continue if ...' a little while ago  
(although I would go for a 'loop:' that doesn't need to be continue'd  
explicitely).  I had come to the point of view that the restrictions  
of the looping construct had in fact somehow liberated it and made it  
more versatile by making

    if condition: break

and

    if condition: continue

common control flow constructs inside a while loop, that in particular  
encompass the do ... while / repeat ... until constructs, etc seen in  
other languages (I may have expressed myself better in the original  
thread).  My motivation for 'break/continue if ...' was that it would  
make those constructs stand out more (and could be hilighted clearly  
as such in editors) - I was a bit surprised when I was told it would  
make code less readable and that it was a slippery slope, but then I  
have lots of ideas, most of which don't turn out to be very good :)

-- 
Arnaud




More information about the Python-ideas mailing list