[Python-3000] Announcing PEP 3136
Terry Reedy
tjreedy at udel.edu
Wed Jul 4 01:40:14 CEST 2007
"John S. Yates, Jr." <john at yates-sheets.org> wrote in message
news:j1gk83hfeltf7uqi0u4b5tpgbg80qg3cp0 at 4ax.com...
| On Tue, 3 Jul 2007, "Guido van Rossum" <guido at python.org> wrote:
|
| >However, I'm rejecting it on the basis that code so complicated to
| >require this feature is very rare.
|
| I assume that you are familiar with Donald E. Knuth's classic paper:
| "Structured Programming with go to Statements"
| http://pplab.snu.ac.kr/courses/adv_pl05/papers/p261-knuth.pdf
Do you consider this to be for or against the PEP? Rereading it....
At least half Knuth's goto examples are covered by Python's single level
restricted gotos:
Example 1 (switched to 0-bases arrays, not tested):
for i in range(m):
if A[i] == x: break
else:
A[m] = x
B[m] = 0
m += 1
B[i] += 1
Example 5 (ditto):
i = 0 #? initial value not given
while True:
if A[i] < x:
if L[i] != 0:
i = L[i]; continue
else:
L[i] = j; break
else: # > x
if R[i] != 0:
i = R[i]; continue
else:
R[i] = j; break
# dup code could be factored with LR = L or R as A[i] < or > x
A[j] = x
L[j] = R[j] = 0
j += 1
The rest are general gotos, including jumps into the middle of loops.
None are multilevel continues or breaks.
tjr
More information about the Python-3000
mailing list