[Python-Dev] PEP 315 - do while
Hans Polak
Hans.Polak at capgemini.com
Mon Oct 2 08:41:53 CEST 2006
Hi Nick,
Yep, PEP 315. Sorry about that.
Now, about your suggestion
do:
<setup code>
while <condition>
<loop body>
else:
<loop completion code>
This is pythonic, but not logical. The 'do' will execute at least once, so
the else clause is not needed, nor is the <loop completion code>. The <loop
body> should go before the while terminator.
I'm bound to reiterate my proposal:
<before loop code>
do:
<loop body>
<setup code>
while <condition>
<after loop code>
Example (if you know there will be at least one val).
source.open()
do:
val = source.read(1)
process(val)
while val != lastitem
source.close()
The c syntax is:
do
{
block of code
} while (condition is satisfied);
The VB syntax is:
do
block
loop while <cond>
Cheers & thanks for your reply,
Hans Polak.
-----Original Message-----
From: Nick Coghlan [mailto:ncoghlan at gmail.com]
Sent: domingo, 01 de octubre de 2006 6:18
To: Hans Polak
Cc: python-dev at python.org
Subject: Re: [Python-Dev] PEP 351 - do while
Hans Polak wrote:
> Hi,
>
>
>
> Just an opinion, but many uses of the 'while true loop' are instances of
> a 'do loop'. I appreciate the language layout question, so I'll give you
> an alternative:
>
>
>
> do:
>
> <body>
>
> <setup code>
>
> while <condition>
>
I believe you meant to write PEP 315 in the subject line :)
To fully account for loop else clauses, this suggestion would probably need
to
be modified to look something like this:
Basic while loop:
<setup code>
while <condition>:
<loop body>
<setup code>
else:
<loop completion code>
Using break to avoid code duplication:
while True:
<setup code>
if not <condition>:
<loop completion code>
break
<loop body>
Current version of PEP 315:
do:
<setup code>
while <condition>:
<loop body>
else:
<loop completion code>
This suggestion:
do:
<setup code>
while <condition>
<loop body>
else:
<loop completion code>
I personally like that style, and if the compiler can dig through a function
looking for yield statements to identify generators, it should be able to
dig
through a do-loop looking for the termination condition.
As I recall, the main objection to this style was that it could hide the
loop
termination condition, but that isn't actually mentioned in the PEP (and in
the typical do-while case, the loop condition will still be clearly visible
at
the end of the loop body).
Regards,
Nick.
--
Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia
---------------------------------------------------------------
http://www.boredomandlaziness.org
This message contains information that may be privileged or confidential and is the property of the Capgemini Group. It is intended only for the person to whom it is addressed. If you are not the intended recipient, you are not authorized to read, print, retain, copy, disseminate, distribute, or use this message or any part thereof. If you receive this message in error, please notify the sender immediately and delete all copies of this message.
More information about the Python-Dev
mailing list