> On Jul 1, 2016, at 11:54 AM, Dave Abrahams <[email protected]> wrote: > > > on Fri Jul 01 2016, Matthew Johnson <matthew-AT-anandabits.com > <http://matthew-at-anandabits.com/>> wrote: > >>> 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). > > Yes, but requirements clustering is absolutely essential to creating > coherent generic libraries. Otherwise you end up with a billion little > granular protocols, to no real purpose. > >> 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. > > It might, but let's drop it. The only *real* reason we have it is to > provide nice precondition checking for Range construction, and we can > simply make that conditional on comparability.
Cool. This sounds like a good approach. > > -- > Dave
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
