Guido van Rossum wrote:
On Sun, Apr 4, 2010 at 9:58 AM, cool-RR cool-rr@cool-rr.com wrote:
I'm still a bit confused by generators and generator expressions, but what about making a `generator.__add__` method, that'll act like `itertools.chain`?
This gets proposed several times a year. We always shoot it down for the same reasons: iterators are an abstract API and we don't want to burden every iterator implementation with having to implement various operations.
I actually messed around with writing a FlexIter class once that wrapped an arbitrary iterator and mapped __add__ to itertools.chain, __mul__ to itertools.repeat and a few other things. It actually turned out to get really ugly, really fast, so I abandoned the idea.
Making arbitrary iterators as easy to manipulate as lists is an appealing idea, but a lot harder than it sounds given the deliberately limited definition of the iterator protocol.
Cheers, Nick.