On 9/9/2021 5:36 PM, dn via Python-list wrote:
Why does Python not have a repeat-until loop construct?

1. It is not needed.  You covered that.

2. It is rare useful. For loops are common. While loops are occasional (nearly an order of magnitude less common than for loops. Fractional loop constructs are rare. ("loop-and-a-half" is a mislabel since at not even one loop is guaranteed.) "do-while" or "repeat-until is even rarer since fractional-loop include this as a special case.

3. Adding 'until' as a keyword *now*, rather than in 1.0 or at least several versions ago, has cost so far judged to outweigh the small benefit. The PEP parser makes contextual keywords much more easily possible but there is a cost to having a context dependent grammar. Consider this 3.10.0 snippet:

>>> match, case = 1, 1
>>> match match:
...     case case:
...         print('matched')
...
...
matched
>>> match case:
...     case match:
...         print('matched')
...
...
matched

To me, having a word sometimes be a keyword and sometime not make code harder to read. In IDLE, it is a bit easier as the keyword uses of 'match' and 'case' above are correctly highlighted as keywords, and the non-keywords uses not highlighted. But this is harder that for full-time keywords with sane code that works in an re-based highlighter.

Underscore, not used above, but also a new contextual keyword, is even harder. Three of us could not get all the cases we tested correct and I suspect doing so without running the PEG parser may be impossible. Since highlighting is redone with each keystroke, I suspect doing the latter would add a noticeable and unacceptable lag between keystrokes and display.



--
Terry Jan Reedy

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to