<p dir="ltr"><br>
On 8 Jun 2014 06:34, "Antony Lee" <<a href="mailto:antony.lee@berkeley.edu">antony.lee@berkeley.edu</a>> wrote:<br>
><br>
> I agree that "range(start=x)" is awkward due to the unusual argument handling of "range", and you are also correct that I should have said "an iterable for which iter(range(x, None, step)) behaves as count(n, step)".<br>

> I don't see an issue with len and negative indexing raising ValueError and IndexError, respectively.  After all, a negative index on an infinite sequence is just as undefined.</p>
<p dir="ltr">This is missing the point. We already have a better abstraction for data sources of unknown (potentially infinite) length: the iterator protocol.</p>
<p dir="ltr">Yes we *could* define an infinite sequence as "like a sequence, but almost all the operations that distinguish it from an iterator throw an exception", but that's a long way from making a case for why we *should*.</p>

<p dir="ltr">Nobody in this thread has addressed key questions like the following:</p>
<p dir="ltr">* What is the actual use case for "infinite sequences"? <br>
* How is the "infinite sequence" concept easier to teach, write & read than existing approaches based on the itertools module?<br>
* How does claiming to provide a particular interface, and then throwing exceptions when you actually try to use it provide a better API user experience than continuing with the status quo?</p>
<p dir="ltr">The bar for new syntax in Python is high, but the bar for new semantic concepts is even higher.</p>
<p dir="ltr">Regards,<br>
Nick.</p>
<p dir="ltr">> Antony<br>
><br>
><br>
> 2014-06-07 12:07 GMT-07:00 Terry Reedy <<a href="mailto:tjreedy@udel.edu">tjreedy@udel.edu</a>>:<br>
><br>
>> On 6/6/2014 9:59 PM, Neil Girdhar wrote:<br>
>>><br>
>>> That would be great.<br>
>><br>
>><br>
>> What does 'that' refer too? Ram's original proposal, which you quoted, or Antony's counter-proposal, which you also quoted? Ambiguity is the cost of top-posting combined with over-quoting.<br>
>><br>
>> Since I already explained what is wrong with Ram's proposal, I will delete it and assume you mean Antony's, which seems to not have arrived on my machine.<br>
>><br>
>><br>
>>> On Friday, May 16, 2014 12:16:52 AM UTC-4, Antony Lee wrote:<br>
>>><br>
>>>     Actually, a more reasonable solution would be to have range handle<br>
>>>     keyword arguments and map "range(start=x)"  to "count(x)".<br>
>><br>
>><br>
>> Having a parameter like 'start' mean two different things when passed by position and name is the sort of oddity we try to avoid.<br>
>><br>
>> Since "a range object is an immutable, constant attribute, reiterable sequence object" (my earlier post), while count is an iterator, that does not literally work. So I will assume that you mean (looking ahead) 'an iterable sis_range such that iter(sis_range(n, None, step)) is the same as count(n, step)'.<br>

>><br>
>><br>
>>> Or,  perhaps more simply, "range(x, None)"<br>
>><br>
>><br>
>> As an expression, stop=None is literally what you mean.<br>
>><br>
>> The problem is that range is a finite sequence with a finite length and an indexable end. For instance, range(10)[-1] == 9. What is needed is a new semi_infinite_sequence base class 'SemiInfSeq' that allows (but not requires) infinite length: float('inf') or a new int('inf'). It would also have to disallow negative ints for indexing and slicing. Or perhaps a class factory is needed.<br>

>><br>
>> Many infinite iterators whose items can be calculated from index n could be the iterator for a SIS subclass.  A geometric series and the sequence of squares are other examples. This could be a PyPI package.<br>
>><br>
>> -- <br>
>> Terry Jan Reedy<br>
>><br>
>><br>
>> _______________________________________________<br>
>> Python-ideas mailing list<br>
>> <a href="mailto:Python-ideas@python.org">Python-ideas@python.org</a><br>
>> <a href="https://mail.python.org/mailman/listinfo/python-ideas">https://mail.python.org/mailman/listinfo/python-ideas</a><br>
>> Code of Conduct: <a href="http://python.org/psf/codeofconduct/">http://python.org/psf/codeofconduct/</a><br>
><br>
><br>
><br>
> _______________________________________________<br>
> Python-ideas mailing list<br>
> <a href="mailto:Python-ideas@python.org">Python-ideas@python.org</a><br>
> <a href="https://mail.python.org/mailman/listinfo/python-ideas">https://mail.python.org/mailman/listinfo/python-ideas</a><br>
> Code of Conduct: <a href="http://python.org/psf/codeofconduct/">http://python.org/psf/codeofconduct/</a><br>
</p>