Haravikk-

Retaining the use of the binary operator using Void as the open end, certainly 
helps with readability. As I said in my initial comments, though, my gut is 
that these operators obfuscate the language. (i.e., it triggers the uninitiated 
to refer to the Swift documentation)

With that said, short of going with something akin to  s[first..<i] and  
s[i..<last] , I don’t know how we can make it intuitive. Obviously, the 
first/last approach is pretty darn verbose, so it doesn’t do anything to 
address the initial concern about  s.startIndex  being tiresome to write.

As you point out, underscore does does have a nice consistency within the 
language. It also kind of looks like “open” to me.

Thanks.

-Matt

> On Apr 18, 2017, at 4:08 PM, Haravikk <swift-evolut...@haravikk.me> wrote:
> 
> 
>> On 18 Apr 2017, at 15:29, Matt Lewin via swift-evolution 
>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>> 
>> 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?)
> 
> I mentioned in an earlier reply that my preference would be to retain use of 
> the binary operator and use Void as the open end like so:
> 
> func ... <T:Comparable>(lhs:T, rhs:Void) -> PartialRangeFrom<T> { … }
> func ... <T:Comparable>(lhs:Void, rhs:T) -> PartialRangeTo<T> { … }
> 
> let rangeFrom = 5...()
> let rangeTo = ()...5
> 
> Would that solve your concern? Ideally we could also push for underscore to 
> become another alias for Void when used in such a context, so we could do:
> 
> let rangeFrom = 5..._
> let rangeTo = _...5
> 
> This to me is a bit more explicit that one end of the range being left open 
> on purpose. I initially considered some kind of other symbol, but I think 
> Void/underscore is suitable enough, underscore especially as it's consistent 
> with other features.

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

Reply via email to