
On 3/1/09, Greg Ewing <greg.ewing@canterbury.ac.nz> wrote:
Jacob Holm wrote:
A \ R --- (whatever R is waiting for) / B
... normally you'd create a fresh iterator for each yield-from that you want to do. So A and B would really be yielding from different iterators, even if they were both iterating over the same underlying object.
I think the problem might come up with objects that are using the iterator protocol destructively. For example, imagine A and B as worker threads, and R as a work queue.
If you did try to share iterators between yield-froms like that, ... something is going to get an exception due to trying to resume an exhausted iterator.
I would expect that to be interpreted as a StopIteration and handled gracefully. If that doesn't seem reasonable, then I wonder if the whole protocol is still too fragile. -jJ