> On 28. Nov 2017, at 02:34, Douglas Gregor via swift-evolution 
> <swift-evolution@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@swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to