On that note: ‘containsOnly' is still my favorite by a wide margin. I know it is longer than ‘all’, but it’s behavior is much clearer (especially for those of us who have never used or heard of ‘all’ in other languages), and it’s relationship with ‘contains’ is also very clear.
Thanks, Jon > On Apr 5, 2017, at 3:06 PM, Jarod Long via swift-evolution > <[email protected]> wrote: > > I don't think an argument label is sufficient to satisfy the first > fundamental API design guideline: "Clarity at the point of use is your most > important goal." > > The argument label is not visible at the point of use when using trailing > closure syntax, so it provides no additional clarity there. Moving the > argument label into the base method name solves that problem and I think is a > clear case of satisfying the second fundamental guideline: "Clarity is more > important than brevity." > > Jarod > > On Apr 5, 2017, 14:51 -0700, Kevin Nattinger via swift-evolution > <[email protected]>, wrote: >> I definitely think we should stick with `all` and an appropriate argument >> label. It’s a term of art and the label makes it perfectly clear what to >> expect. >> That said, `all(match)` and `all(equal)` sound to me like they expect an >> object to compare each against (func all(equal needle: Element)) >> I suggest something like `all(pass:)`. >> >>> On Apr 5, 2017, at 4:34 PM, Brandon Trussell via swift-evolution >>> <[email protected] <mailto:[email protected]>> wrote: >>> >>> I retract my gripes on the original names also. The argument labels make >>> the intent of the method clear. >>> >>> On Wed, Apr 5, 2017 at 11:23 AM, Thorsten Seitz via swift-evolution >>> <[email protected] <mailto:[email protected]>> wrote: >>> +1 >>> >>> Am 03.04.2017 um 10:29 schrieb Daniel Duan via swift-evolution >>> <[email protected] <mailto:[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] <mailto:[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] <mailto:[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 >>>>>> >>>>>> <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 <https://github.com/airspeedswift> >>>>>> 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] <mailto:[email protected]> >>>> https://lists.swift.org/mailman/listinfo/swift-evolution >>>> <https://lists.swift.org/mailman/listinfo/swift-evolution> >>> >>> _______________________________________________ >>> swift-evolution mailing list >>> [email protected] <mailto:[email protected]> >>> https://lists.swift.org/mailman/listinfo/swift-evolution >>> <https://lists.swift.org/mailman/listinfo/swift-evolution> >>> >>> >>> >>> >>> -- >>> Brandon >>> _______________________________________________ >>> swift-evolution mailing list >>> [email protected] <mailto:[email protected]> >>> https://lists.swift.org/mailman/listinfo/swift-evolution >> >> _______________________________________________ >> 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
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
