Q: Why don't combinators on iterators in stdlib propagate length hints? There is a protocol for specifying a length hint (object.__length_hint__) on iterators. However, all the functions in the stdlib that I have tested with do not propagate this information. For example
>>> import operator
>>> operator.length_hint(range(10))
10
>>> operator.length_hint(enumerate(range(10)))
0

enumerate's length hint could just return the length hint on the contained iterator. This lack of support makes length hints a lot less useful, because as soon as an iterator touches a combinator, any information on the length hint is lost. This is true of map, zip, and many functions in itertools as well
I don't see any correctness problems, because the length hint is just a hint anyway, and I don't see any performance problems, because this is just requires an additional instance method.
So why doesn't the stdlib take this opportunity?
