PEP-0315--Enhanced While Loop: An idea for an alternative syntax

Nicolas Fleury nid_oizo at yahoo.com_remove_the_
Wed Feb 18 13:57:39 EST 2004


Andrew Koenig wrote:
> PEP 315 suggests that a statement such as
> 
>     do:
>         x = foo()
>     while x != 0:
>         bar(x)
> 
> be equivalent to
> 
>     while True:
>         x = foo()
>         if x == 0:
>             break
>         bar(x)
> 
> I like the overall idea, but wonder about the extra keyword.  Moreover, if
> you see
> 
>         x = foo()
>     while x != 0:
>         bar(x)
> 
> you have to read backward to see whether the assignment to x is part of this
> statement or part of a previous statement.
> 
> I have a proposal for an alternative syntax that solves both of these
> problems:
> 
>     while:
>         x = foo()
>     and while x != 0:
>         bar(x)

I like the "while:" and "and while:" syntax, but I think the "or while" 
is confusing.  I think it's worth an addition to PEP315

However, I remember reading Stroustrup saying he was not using the 
do-while at all (maybe in D&E, I'm not sure).  Even if I have used 
do-while few times, I have the feeling it should not be added to Python 
at all, so I guess I'm in fact against PEP315, whatever the syntax.  The 
reason is, if I say "do that while you're sleeping", is doesn't mean to 
me to do it at least once, even if not sleeping.  It might explain why 
so much people are not using the do-while.  This new syntax is 
interesting since it changes the vocabulary, but I think it's still 
unclear.  The if-break method is only one line more (if the break is on 
a new line), and is pretty clear in meaning.  However, there's things 
from C like += that I'm very happy to have in Python and there's still 
things I would like to have, like a ?: equivalent with a different 
syntax, but that's another story...

Regards,

Nicolas Fleury



More information about the Python-list mailing list