[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: A Problem with Python's 'yield'



On Tue, 2003-05-27 at 14:09, Dan Sugalski wrote:
> At 11:15 AM -0400 5/27/03, Eric Kidd wrote:
> >We can shorten the code--and make it run in O(N) time--by adding a new
> >keyword to replace the "for v in ...: yield v" pattern:
> 
> Color me confused here, but are you proposing to yield out of 
> multiple levels of the call at once, or to yield multiple values at 
> once, or to yield multiple values but store them up and parcel them 
> out one per call?

I'm proposing to yield straight from the leaves of the tree to the
ultimate consumer, instead of yielding and re-yielding each value up the
tree one step at a time.  Passing each leaf value up to the root adds an
extra O(log N) factor to the algorithm, which is just silly.

'yield_all' requires some implementation tricks--and it costs you an
extra level of indirection--but it can be done, even with a C back end.

Cheers,
Eric