[Python-Dev] Re: anonymous blocks

Bob Ippolito bob at redivi.com
Mon Apr 25 05:39:52 CEST 2005


On Apr 24, 2005, at 11:32 PM, Phillip J. Eby wrote:

> At 04:57 PM 4/24/05 -0700, Guido van Rossum wrote:
>> So a block could return a value to the generator using a return
>> statement; the generator can catch this by catching ReturnFlow.
>> (Syntactic sugar could be "VAR = yield ..." like in Ruby.)
>
> [uncontrolled drooling, followed by much rejoicing]
>
> If this were available to generators in general, you could untwist 
> Twisted.  I'm basically simulating this sort of exception/value 
> passing in peak.events to do exactly that, except I have to do:
>
>     yield somethingBlocking(); result=events.resume()
>
> where events.resume() magically receives a value or exception from 
> outside the generator and either returns or raises it.  If 
> next()-with-argument and next_ex() are available normally on 
> generators, this would allow you to simulate co-routines without the 
> events.resume() magic; the above would simply read:
>
>     result = yield somethingBlocking()
>
> The rest of the peak.events coroutine simulation would remain around 
> to manage the generator stack and scheduling, but the syntax would be 
> cleaner and the operation of it entirely unmagical.

Only if "result = yield somethingBlocking()" could also raise an 
exception.

-bob



More information about the Python-Dev mailing list