[Python-ideas] "while:" for the loop

Tobias Kohn kohnt at tobiaskohn.ch
Wed Sep 26 09:42:16 EDT 2018


Although I doubt it will really make it into Python's grammar, I am  
all +1 for the idea of having "repeat" as a loop keyword in Python.   
Actually, I have been using "repeat" as a keyword in Python for quite  
some time now, and found it not only convenient, but also a great help  
in education.

My version of "repeat" has two versions.  The primary usage is with an  
expression that evaluates to a number and specifies how many times the  
loop is to be repeated:
repeat <INT>:
The second version is without the number, and, indeed, stands for an  
infinite loop.
I must admit, though, that I had hardly ever reason to use the second form.

The implementation is currently built on top of Jython, and uses  
something like a preprocessor to implement the "repeat"-keyword.  In  
order to keep some backward compatibility, the preprocessor does check  
a few cases to determine how it is used, and does not always treat it  
as a keyword.

Even though it is possible to write a parser that detects if "repeat"  
is used as the keyword for a loop or anything else, it will make the  
syntax very brittle.  Take, for instance:
repeat (3*4)
Now, is this supposed to be a function call, or is it a  
`repeat`-statement with a missing colon at the end? 

I therefore would strongly advise against having a word act as a  
keyword sometimes, and sometimes not.  Probably a better solution  
would be to have something like `from __features__ import repeat` at  
the beginning.

My reason for introducing "repeat" into Python in the first place was  
because of didactical considerations.  Even though it might not seem  
so, variables are indeed a very hard concept in programming,  
particularly for younger students.  And variables get particularly  
hard when combined with loops, where the value of a variable changes  
all the time (this requires a lot of abstract thinking to be properly  
understood).  Loops alone, on the other hand, are a relatively easy  
concept that could be used early one.  So, there is this dilemma: how  
do you teach loops at an early stage without using variables?  That's  
when I added the "repeat"-keyword for loops, and it has worked  
marvellously so far :).


Quoting James Lu <jamtlu at gmail.com>:

> repeat could be only considered a keyword when it’s used as a loop
> Sent from my iPhone
>> On Sep 26, 2018, at 8:46 AM, Brice Parent <contact at brice.xyz> wrote:
>>> Le 26/09/2018 à 14:33, James Lu a écrit :
>>> what about “repeat:”?
>>> Sent from my iPhone
>> I'm not sure it was on purpose, but you replied to me only, and not  
>> the entire list.
>> I believe the adding of a new keyword to do something that is  
>> already straightforward (`while True:`), and that doesn't add any  
>> new functionality, won't probably ever be accepted.
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> https://mail.python.org/mailman/listinfo/python-ideasCode of  
> Conduct: http://python.org/psf/codeofconduct/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20180926/213aaa20/attachment-0001.html>

More information about the Python-ideas mailing list