[swift-evolution] [Review] SE-0191: Eliminate IndexDistance from Collection
Karl Wagner
razielim at gmail.com
Wed Nov 29 00:48:41 CST 2017
> On 28. Nov 2017, at 02:34, Douglas Gregor via swift-evolution <swift-evolution at swift.org> wrote:
>
> Hello Swift community,
>
> The review of SE-0191 "Eliminate IndexDistance from Collection" begins now and runs through December 3, 2017. The proposal is available here:
>
> https://github.com/apple/swift-evolution/blob/master/proposals/0191-eliminate-indexdistance.md <https://github.com/apple/swift-evolution/blob/master/proposals/0191-eliminate-indexdistance.md>
> Reviews are an important part of the Swift evolution process. All reviews should be sent to the swift-evolution mailing list at
>
> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
> or, if you would like to keep your feedback private, directly to the review manager. When replying, please try to keep the proposal link at the top of the message:
>
> Proposal link:
>
> https://github.com/apple/swift-evolution/blob/master/proposals/0191-eliminate-indexdistance.md <https://github.com/apple/swift-evolution/blob/master/proposals/0191-eliminate-indexdistance.md>
> Reply text
> Other replies
> <https://github.com/apple/swift-evolution#what-goes-into-a-review-1>What goes into a review?
>
> The goal of the review process is to improve the proposal under review through constructive criticism and, eventually, determine the direction of Swift. When writing your review, here are some questions you might want to answer in your review:
>
> What is your evaluation of the proposal?
+1
> Is the problem being addressed significant enough to warrant a change to Swift?
Yes
> Does this proposal fit well with the feel and direction of Swift?
Yes
> If you have used other languages or libraries with a similar feature, how do you feel that this proposal compares to those?
> How much effort did you put into your review? A glance, a quick reading, or an in-depth study?
I thought about this for a long time. Initially I was horrified, but I’ve come to the realisation that it is unnecessary and really makes it much easier to use Collection generically. If we didn’t already have this associatedtype, I don’t think anybody would ever ask for it. It’s perfectly reasonable for the standard-library’s Collection abstraction to be limited to the size of Int.
As Ben said, you can create your own Collection-style abstraction if that doesn’t fit your needs - and in fact, I have just such a protocol, exactly for the use-case that he described: a Collection-like file abstraction which I want to work on a 32-bit machine. That’s a reasonable solution.
The benefit I’ve found from doing that isn’t so much in Collection conformance itself, but just getting inspiration from how it (and its sister types) are structured. These niche cases are going to trip up most generic algorithms anyway, meaning all the benefits you got by conforming to Collection over just Sequence are now potential crashes. For example, if you call “map” on a collection with more than Int.max elements, the result Array couldn’t hold the data.
I could potentially see room for something between Sequence and Collection, like “Space” or something. An object which can retrieve sub-items by an index and whose count may be greater than the number of items storable at any one time in the host machine. Collection could refine “Space”, binding IndexDistance to Int (and effectively removing it as a parameter). The benefit of doing this is that we don’t lose (even theoretical) capability in the standard library, and we have some kind of migration path.
> More information about the Swift evolution process is available at
>
> https://github.com/apple/swift-evolution/blob/master/process.md <https://github.com/apple/swift-evolution/blob/master/process.md>
> Thank you,
>
> -Doug
>
> Review Manager
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20171129/568c98a1/attachment.html>
More information about the swift-evolution
mailing list