bellman at lysator.liu.se (Thomas Bellman) writes:
>Greg Ewing <see_reply_address at something.invalid> wrote:>>> On the other hand, a situation that *is* very common is>> a loop-and-a-half, with the exit condition in the middle.>> So far, I've never seen *any* really good loop-and-a-half>> structure in any language, and I think Python has a chance>> to be truly innovative here.>>As others have already said, iterators can sometimes alleviate>this problem.>>And there is *one* language where I think the structure for>loop-and-a-half *is* good: Forth. The syntax goes something>like
(---)
Bourne Shell also has
while
foo
bar
gazonk ?
do
gurka
done
>I *would* have liked that to be>> repeat:> part_1()> while test_1():> part_2()> while test_2():> part_3()> while test_3():> part_4()>>in Python, but that is unfortunately not compatible with the>current Python syntax. :-(
The problem is that there's no indication where the repeat: block ends.
If we should invent new syntax, I would limit it to the loop-and-a-half,
and keep "break" for multiple exit loops.
repeat:
part_1()
while test_1():
part_2()
This is unambigous to the compiler, but not could be confusing to humans,
specially if part_1() is large. Adding more new keywords makes it clearer:
repeat:
part_1()
until not test_1():
part_2()
Or, inspired by Bourne, with no new keywordss at all (and even more cryptic):
while:
part_1()
test_1():
part_2()
I don't see anything like this happening anytime soon.
/Paul