[Python-Dev] Re: More int/long integration issues
David Abrahams
dave@boost-consulting.com
Fri, 21 Mar 2003 09:43:36 -0500
Guido van Rossum <guido@python.org> writes:
>> Guido van Rossum <guido@python.org> writes:
>>
>> > The bytecode compiler should be clever enough to see that you're
>> > writing
>> >
>> > for i in range(...): ...
>> >
>> > and that there's no definition of range other than the built-in one
>> > (this requires a subtle change of language rules); it can then
>> > substitute an internal equivalent to xrange().
>>
>> Ouch! What happens to:
>>
>> def foo(seq):
>> for x in seq:
>> ...
>>
>> foo(xrange(small, really_big))
>>
>> if xrange dies??
>
> Good point. I guess xrange() can't die until range() becomes an
> iterator (which can't be before Python 3.0).
>
> Hm, maybe range() shouldn't be an iterator but an interator
> generator. No time to explain; see the discussion about restartable
> iterators.
I think what you mean is fairly obvious. list et al. are iterator
generators, right? It's just a thing with an __iter__ function which
produces an iterator?
If so, I tend to agree that's the right behavior for range().
range(x,y,z) should be an immutable object.
--
Dave Abrahams
Boost Consulting
www.boost-consulting.com