On 07/16/2015 06:35 AM, Antoon Pardon wrote:
On 07/16/2015 01:11 PM, Chris Angelico wrote:
Unless, of course, *all* TCO examples, even real-world ones, could be
trivially reimplemented some other way, a theory which is gaining
currency...
Of course they could be rather trivially reimplemented. They would
also become rather ugly and less easy to comprehend.
Here is one way to do the odd, even example.
def even(n):
return odd_even('even', n)
def odd(n):
return odd_even('odd', n)
def odd_even(fn, n):
while fn is not None:
if fn == 'even':
fn, n = (None, True) if n == 0 else ('odd', n - 1)
elif fn == 'odd':
fn, n = (None, False) if n == 0 else ('even', n - 1)
else:
raise ValueError("Unknown state: %s" % fn)
return n
Wow -- definitely uglier and less easy to understand than the original (even if
the original had had the error-checking).
--
~Ethan~
--
https://mail.python.org/mailman/listinfo/python-list