[Python-Dev] PEP 351 - do while

Ron Adam rrr at ronadam.com
Sun Oct 1 21:08:45 CEST 2006


Michael Urman wrote:
> On 10/1/06, Ron Adam <rrr at ronadam.com> wrote:
>> (I don't think this has been suggested yet.)
>>
>>      while <enter_condition>, <exit_condition>:
>>         <body>
> 
> [snip]
> 
>> Putting both the entry and exit conditions at the top is easier to read.
> 
> I agree in principle, but I thought the proposed syntax already has
> meaning today (as it turns out, parentheses are required to make a
> tuple in a while condition, at least in 2.4 and 2.5). To help stave
> off similar confusion I'd rather see a pseudo-keyword added. However
> my first candidate "until" seems to apply a negation to the exit
> condition.
> 
>     while True until False:  # run once? run forever?
>     while True until True:  # run forever? run once?
 >
 > It's still very different from any syntactical syntax I can think of
 > in python. I'm not sure I like the idea.
 >
 > Michael


I thought the comma might be a sticking point.

My first thought was to have a series of conditions evaluated on loops with the 
last condition repeated.

       while loop1_cond, loop2_cond, loop3_cond, ..., rest_condition:
           <body>

But I couldn't think of good uses past the first two that are obvious so I 
trimmed it down to just enter_condition and exit_condition which keeps it 
simple.  But from this example you can see they are all really just top of the 
loop tests done in sequence.  A do loop is just a matter of having the first one 
evaluate as True.

The current while condition is an entry condition the first time it's evaluated 
and an exit condition on the rest.  So by splitting it in two, we can specify an 
enter and exit test more explicitly.  There's a certain consistency I like about 
this also.

Is it just getting around or finding a nice alternative to the comma that is the 
biggest problem with this?

Maybe just using "then" would work?

      while cond1 then cond2:
          <body>


Cheers,
    Ron






More information about the Python-Dev mailing list