
On Thu, 16 Jul 2009 08:50:06 am Jan Kaliszewski wrote:
Hello,
The issue has been coming back repeatedly:
And not very long ago at that.
Please have a read of this thread:
http://mail.python.org/pipermail/python-ideas/2009-April/004306.html
and (if I may be so immodest to link to my own post) especially this one where I discuss various possible ways of spelling the loop:
http://mail.python.org/pipermail/python-ideas/2009-April/004326.html
Maybe here the simplest approach can lead us to the solution? I.e.:
repeat while CONDITION: SOME ACTIONS HERE ...
(1) I dislike that it puts the test at the top of the loop even though it is not tested until the bottom.
(2) I dislike that it has two keywords back-to-back.
(3) I prefer to swap the sense of the test. Rather than end the loop when CONDITION becomes false, I'd prefer the Pascal semantics of ending the loop when CONDITION becomes true. Using your proposed syntax, that would become:
repeat until CONDITION: block
Now we can discard the redundant double keyword and just write:
until CONDITION: block
which is still funny because the test is at the top of the block although it's not tested until the bottom.
In human language it'd mean: do ACTIONS once unconditionally, then *repeat* them while the CONDITION is true.
Additional advantage is that probably for many people associate 'repeat' with such construction (from experience with other languages).
Other people associate 'do' with such a construction.
I suspect we are doomed to keep re-visiting this question until Python5K, because (1) there are so many ways of spelling a do...until loop and the differences are (almost entirely) just aesthetic; and (2) there is no overwhelming advantage to do...until compared to a while loop with an explicit break.