on Fri May 06 2016, Kevin Ballard <[email protected]> wrote:
> On Fri, May 6, 2016, at 05:31 PM, Kevin Ballard wrote: >> On Fri, May 6, 2016, at 05:19 PM, Dave Abrahams via swift-evolution wrote: >> > >> > on Wed May 04 2016, Chris Lattner <[email protected]> wrote: >> > >> > > Proposal link: >> > > https://github.com/apple/swift-evolution/blob/master/proposals/0045-scan-takewhile-dropwhile.md > >> > > >> > > Hello Swift Community, >> > > >> > > The review of SE-0045: "Add scan, prefix(while:), drop(while:), and >> > > unfold to the stdlib" ran from April 28...May 3, 2016. A subset of the >> > > proposal is *accepted, with modifications* for Swift 3. This proposal >> > > included four new additions to the standard library: >> > > >> > > Sequence.prefix(while:) & Sequence.drop(while:) - These are *accepted* >> > > as specified in revision 3 of the proposal. >> > >> > I know the review is over and all, but… >> > >> > Chris brought to my attention an idea that I liked, and asked me to post >> > here about it. Specifically, the argument label “where:” would probably >> > be better than “while:”. “While” makes it sound to me like it's going >> > to take a nullary predicate and be much more active. But it's hard to >> > love >> > >> > s.drop(where: { $0 > 1 }) >> > s.drop { $0 > 1 } >> > >> > because it makes it sound like a general filtering operation. >> > >> > Therefore, I'd much rather see >> > >> > s.droppingPrefix(where: {$0 > 1}) >> >> Using "where:" has a very high potential for confusion, because >> "where" makes it sound like it runs the predicate against every >> single element, whereas "while" makes it clear that it stops >> evaluating elements once the predicate returns false. Or in other >> words, `drop(where: predicate)` looks like it should be equivalent >> to `filter({ !predicate($0) })`. > > Oops, I read your message too fast and missed the fact that you > changed the function name too in the very last line. And made the exact point that you made :-) > If we switched to `droppingPrefix(where:)` then we'd need to change > `dropFirst(_:)` as well. Yes, as I noted in my response to Erica, I would like to see some more design coherence in this whole area. I think xs.dropFirst() => xs.droppingFirst() xs.dropFirst(3) => xs.droppingPrefix(ofMaxLength: 3) I'm not wedded to “dropping,” especially because it has other connotations. Dmitri, Max, and I kicked around a bunch of other possibilities, e.g. sansPrefix withoutPrefix Anyway, we can't do all of that by the seat of our pants. I personally wouldn't want to go any further than s.dropPrefix(where: ...) without a new proposal/review. -- Dave _______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
