[Python-Dev] Simple generators, round 2
Jeremy Hylton
jeremy@alum.mit.edu
Mon, 26 Mar 2001 12:57:26 -0500 (EST)
>>>>> "TP" == Tim Peters <tim.one@home.com> writes:
>> I'm not sure about Jython. The sys._getframe(), frame.suspend(),
>> and frame.resume() low level interface is nice. I think Jython
>> must know which frames are going to be suspended at compile time.
TP> Yes, Samuele said as much. My belief is that generators don't
TP> become *truly* pleasant unless "yield" ("suspend"; whatever) is
TP> made a new statement type. Then Jython knows exactly where
TP> yields can occur. As in CLU (but not Icon), it would also be
TP> fine by me if routines *used* as generators also needed to be
TP> explicitly marked as such (this is a non-issue in Icon because
TP> *every* Icon expression "is a generator" -- there is no other
TP> kind of procedure there).
If "yield" is a keyword, then any function that uses yield is a
generator. With this policy, it's straightforward to determine which
functions are generators at compile time. It's also Pythonic:
Assignment to a name denotes local scope; use of yield denotes
generator.
Jeremy