> On Jul 1, 2016, at 9:47 AM, Dave Abrahams <[email protected]> wrote:
> 
> 
> on Fri Jul 01 2016, Haravikk <swift-evolution-AT-haravikk.me> wrote:
> 
>>> On 30 Jun 2016, at 23:39, Dave Abrahams <[email protected]> wrote:
>>> All multi-pass sequences can benefit from subscripts.
>> 
>> Sorry, not really what I meant, but rather; how many sequences are
>> really going to use them?
> 
> The subscript and index aren't there for the sequence's benefit, and you
> can't know how users will want to use the sequence.  The whole point of
> making a type conform to a generic protocol is that you can't anticipate
> all of the type's uses, so you want to make it work with as much other
> code as possible.  If I'm defining a new sequence type, how can I know
> whether someone might want to use index(of:) or slicing on it?

This isn’t entirely true.  Sometimes we know *exactly* how a type will be used 
in an application.  It conforms to a generic protocol in order to take 
advantage of pre-existing generic code (algorithms, etc) in the standard 
library (or other libraries).  

If the library contains algorithms expressed in terms of the weakest 
constraints possible (i.e. the current `Sequence` algorithms) sometimes we can 
accomplish what is necessary without needing to implement additional members on 
our type, even if it is possible to implement them and theoretically useful 
(but not useful to the current requirements of the application).

That said, I generally like the direction you suggesting.  

I have been considering the incremental complexity of conforming to 
`Collection` rather than `Sequence` carefully.  The one place that I still need 
to think further about is the `Comparable` requirement on indices and whether 
that might lead to nontrivial complexity over a `Sequence` conformance.  

-Matthew

> 
> -- 
> Dave

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to