Simple is better. Int indexes, please. 

--
C. Keith Ray

* https://leanpub.com/wepntk <- buy my book?
* http://www.thirdfoundationsw.com/keith_ray_resume_2014_long.pdf
* http://agilesolutionspace.blogspot.com/

> On Jan 10, 2018, at 10:44 AM, Karl Wagner via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> 
> 
>>> On 10. Jan 2018, at 17:22, Paul Cantrell via swift-evolution 
>>> <swift-evolution@swift.org> wrote:
>>> 
>>> What is your evaluation of the proposal?
>> 
>> +1. Yes please. Long overdue.
>> 
>>> Is the problem being addressed significant enough to warrant a change to 
>>> Swift?
>> 
>> It’s a long-standing sore thumb. The proposal’s evidence of community demand 
>> fits my own experience: I’ve wanted this on multiple occasions.
>> 
>>> Does this proposal fit well with the feel and direction of Swift?
>> 
>> Yes, and in particular, on the name bikeshedding:
>> 
>> I favor property names with the “all” prefix, whether allValues or allCases. 
>> Looking over my own code, I’ve almost always used the word “all” for this 
>> when I had to hand-roll it — and either allValues or allCases make 
>> reasonable sense in my code when I substitute them.
>> 
>> Whichever protocol name we choose, the property name should be consistent:
>> 
>>      ValueEnumerable → allValues
>>      CaseEnumerable → allCases
>> 
>> Either ValueEnumerable or CaseEnumerable would be a fine name. Contra Chris, 
>> I slightly prefer ValueEnumerable, because it extends to situations where we 
>> still want to enumerate a fixed set of possibilities which don’t strictly 
>> correspond to enum cases but still have that sort of flavor. For example, 
>> one might want:
>> 
>>     enum SideOfBody
>>       {
>>       case left
>>       case right
>>       }
>> 
>>     enum Limb: ValueEnumerable
>>       {
>>       case arm(SideOfBody)
>>       case leg(SideOfBody)
>> 
>>       static let allValues =
>>         [
>>         arm(.left),
>>         arm(.right),
>>         leg(.left),
>>         leg(.right)
>>         ]
>>       }
>> 
>> To my eyes, this code reads better than it would with CaseEnumerable / 
>> allCases.
>> 
>>> If you have used other languages or libraries with a similar feature, how 
>>> do you feel that this proposal compares to those?
>> 
>> Java’s enums had this from the beginning, and Josh Bloch’s design for that 
>> feature has always worked nicely. Java’s design is slightly different: 
>> `Foo.values()` returns Foo[]. However, Swift doesn’t need to follow either 
>> that name or type choice: (1) Java doesn’t use the term “case” as Swift 
>> does, (2) the “all” prefix better fits Swift’s API guidelines IMO, and (3) 
>> using a concrete array type has as opposed to Collection has different 
>> implications in Java than it does Swift.
>> 
>> I _do_ agree  that the proposal should consider constraining the Collection 
>> to be Int-indexed. Why should it ever be otherwise? What’s the motivation 
>> for leaving that open?
>> 
>>> How much effort did you put into your review? A glance, a quick reading, or 
>>> an in-depth study?
>> 
>> Medium quick study.
>> 
>> Cheers, P
>> 
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution@swift.org
>> https://lists.swift.org/mailman/listinfo/swift-evolution
> 
> 
> I don’t agree that the Collection should be Int-indexed. Source-order is not 
> a very strong guarantee IMO, and it wouldn’t be good if people started 
> writing things like "MyEnum.allValues[3]” to reference a specific case.
> 
> If you know the specific case you are looking for, just write it directly. If 
> you found an interesting case while iterating allValues, remember its 
> (opaque) index and come back to it later.
> 
> I’m not a fan of Int-indexes in general. It’s practical to allow it for 
> Array, but in general, for generic Collections, I think it implies an awful 
> lot of knowledge about the Collection’s contents.
> 
> - Karl
> _______________________________________________
> 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