+1

> Am 03.04.2017 um 10:29 schrieb Daniel Duan via swift-evolution 
> <[email protected]>:
> 
> I want to retract my nitpickings on argument labels; `all(equal:)` and 
> `all(match:)` are the best names for these methods.
> 
> things all match condition?
> things all equal value?
> 
> If we accept `all` as a term of art (which I think we should), along with 
> these labels the use site are very readable!
> 
>> On Mar 31, 2017, at 6:38 PM, Daniel Duan via swift-evolution 
>> <[email protected]> wrote:
>> 
>> nit: should these names be `all(matching)`/`all(equalTo)` per API Design 
>> Guidelines?
>>> On Mar 31, 2017, at 8:28 AM, Ben Cohen via swift-evolution 
>>> <[email protected]> wrote:
>>> 
>>> Hi,
>>> 
>>> A short proposal for you as part of the algorithms theme. Hopefully 
>>> non-controversial, aside from the naming of the method and arguments, about 
>>> which controversy abounds. Online copy here: 
>>> https://github.com/airspeedswift/swift-evolution/blob/9a778e904c9be8a3692edd19bb757b23c54aacbe/proposals/0162-all-algorithm.md
>>> 
>>> 
>>> Add an all algorithm to Sequence
>>> Proposal: SE-NNNN
>>> Authors: Ben Cohen
>>> Review Manager: TBD
>>> Status: Awaiting review
>>> Introduction
>>> 
>>> It is common to want to confirm that every element of a sequence equals a 
>>> value, or matches a certain criteria. Many implementations of this can be 
>>> found in use on github. This proposal adds such a method to Sequence.
>>> 
>>> Motivation
>>> 
>>> You can achieve this in Swift 3 with contains by negating both the criteria 
>>> and the result:
>>> 
>>> // every element is 9
>>> !nums.contains { $0 != 9 }
>>> // every element is odd
>>> !nums.contains { !isOdd($0) }
>>> but these are a readability nightmare. Additionally, developers may not 
>>> make the leap to realize contains can be used this way, so may hand-roll 
>>> their own for loop, which could be buggy, or compose other inefficient 
>>> alternatives:
>>> 
>>> // misses opportunity to bail early
>>> nums.reduce(true) { $0.0 && $0.1 == 9 }
>>> // the most straw-man travesty I could think of...
>>> Set(nums).count == 1 && Set(nums).first == 9
>>> Proposed solution
>>> 
>>> Introduce two algorithms on Sequence which test every element and return 
>>> true if they match:
>>> 
>>> nums.all(equal: 9)
>>> nums.all(match: isOdd)
>>> Detailed design
>>> 
> _______________________________________________
> swift-evolution mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to