On Sun, May 10, 2020 at 8:20 PM Andrew Barnert <[email protected]> wrote:

> On May 10, 2020, at 02:42, Alex Hall <[email protected]> wrote:
> >
> > - Handling negative indices for sequences (is there any reason we don't
> have that now?)
>
> Presumably partly just to keep it minimal and simple. Itertools is all
> about transforming iterables into other iterables in as generic a way as
> possible. None of the other functions do anything special if given a more
> fully-featured iterable.
>
> But also, negative indexing isn’t actually part of the Sequence protocol.
> (You don’t get negative indexes for free by inheriting Sequence as a mixin,
> nor is it ensured by testing isinstance with Sequence as an ABC.) It’s part
> of the extra stuff that list and the other builtin sequences happen to do.
> You didn’t suggest allowing negative islicing on set even though it could
> just as easily be implemented there, because you don’t expect negative
> indexing as part of the Set protocol (or the Sized Iterable protocol); you
> did expect it as part of the Sequence protocol, but Python’s model
> disagrees.
>

I understand that, but the same could be said about all forms of slicing.
It's not part of the sequence protocol, it's not provided by the ABC, it's
just a nice thing that lists do.

Maybe practicality beats purity here, and islice should take negative
> indices on any Sequence, or even Sized, input, even though that makes it
> different from other itertools functions, and ignores the fact that it
> could be simulating negative indexing on some types where it’s meaningless.
> But how often have you wanted to call islice with a negative index? How
> horrible is the workaround you had to write instead? I suspect that it’s
> already rare enough of a problem that it’s not worth it, and that any form
> of this proposal would make it even rarer, but I could be wrong.
>

You're right, I don't really care about islice accepting negative indices
in isolation. But it's different in the context of my form of this
proposal, where a certain syntax delegates to islice (or something very
close to it) and we want that syntax to support negative indexing.
_______________________________________________
Python-ideas mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/[email protected]/message/CMBW3XLEJUMTKDR3BMMDU777GOTKERXX/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to