Proposal Link:
https://github.com/apple/swift-evolution/blob/master/proposals/0172-one-sided-ranges.md
 
<https://github.com/apple/swift-evolution/blob/master/proposals/0172-one-sided-ranges.md>

My reply:
Long-time reader, first time commenter.

I agree the need exists to slice up collections as described in the proposal. I 
also agree that Swift 3’s solution to this is jarring.

Given the example in the proposal:
let s = "Hello, World!"
let i = s.index(where: ",")
let greeting = s[s.startIndex..<i]
I agree that “s.startIndex” is tiresome to write. I question, though, whether 
it is harmful to readability.

In contrast, the proposed solution of 
// half-open right-handed range
let greeting = s[..<i]
// closed right-handed range
let withComma = s[...i]
// left-handed range (no need for half-open variant)
let location = s[i...]
requires both the code-writer and the code-reader to infer the missing side is 
the start or end.

>From my perspective, this obfuscates the language by reducing the ability of 
>the code to be read as English. (One of the goals of Swift design, correct?)

As an old Perl and Python hacker, the one-sided slicing example from Python, to 
me, is the perfect example of how those languages obfuscate in the name of 
brevity. Don’t get me wrong, I never had an issue with any of that when coding 
in those languages. The beauty of Swift, though, is that it can generally be 
read by the unindoctrinated.

Unfortunately, I don’t have a palatable alternative syntax solution. Honestly, 
I would go with s[s.startIndex..<i] for readability purposes.

I suppose we could do something similar to oldValue and newValue in getters and 
setters. (e.g., s[start..<i], s[i..<end] or s[first..<i], s[i..<last]) While 
such a thing still requires the layman to pause to consider where those 
pseudo-constants came from, because they are explicit they are at least 
somewhat intuitive.

Thanks for your consideration.

-Matt

> On Apr 18, 2017, at 12:40 AM, Douglas Gregor <[email protected]> wrote:
> 
> Hello Swift community,
> 
> The review of SE-0172 "One-sided Ranges" begins now and runs through April 
> 23, 2017. The proposal is available here:
> 
> https://github.com/apple/swift-evolution/blob/master/proposals/0172-one-sided-ranges.md
>  
> <https://github.com/apple/swift-evolution/blob/master/proposals/0172-one-sided-ranges.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/0172-one-sided-ranges.md
>  
> <https://github.com/apple/swift-evolution/blob/master/proposals/0172-one-sided-ranges.md>
> Reply text
> Other replies
>  
> <https://github.com/apple/swift-evolution/pulls#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?
> Is the problem being addressed significant enough to warrant a change to 
> Swift?
> Does this proposal fit well with the feel and direction of Swift?
> 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?
> 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-announce mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution-announce

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

Reply via email to