At 08:03 PM 6/16/2005 -0700, Guido van Rossum wrote:
>I do like "continue EXPR" but I have to admit I haven't even tried to
>come up with examples -- it may be unnecessary. As Phillip says, yield
>expressions and g.next(EXPR) are the core -- and also incidentally
>look like they will cause the most implementation nightmares. (If
>someone wants to start implementing these two now, go right ahead!)

FYI, I've started work on a patch.  I've got argument passing into 
generators working, and compiling of parenthesized yield expressions, in 
both the C and Python compilers (although the output of the compiler 
package isn't tested yet).  I haven't implemented no-argument yields yet, 
either, or unparenthesized yields on the far RHS of an assignment.  I do 
plan to implement throw() as part of the same patch.  Much of what remains 
is expanding the test suite and writing documentation, though.

It turns out that making 'next(EXPR)' work is a bit tricky; I was going to 
use METH_COEXIST and METH_VARARGS, but then it occurred to me that 
METH_VARARGS adds overhead to normal Python calls to 'next()', so I 
implemented a separate 'send(EXPR)' method instead, and left 'next()' a 
no-argument call.  Whether this is the way it should really work or not is 
a PEP discussion, of course, but it does seem to me that making send(ob) 
and throw(typ,val,tb) separate methods from the iterator protocol is a 
reasonable thing to do.

Anyway, the patch isn't ready yet, but I hope to be able to post something 
for review before the weekend is out.

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to