[Accepted with modifications] SE-0045: Add scan, prefix(while:), drop(while:), and unfold to the stdlib

>
>
> > 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.

···

on Fri May 06 2016, Kevin Ballard <swift-evolution@swift.org> 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 <swift-evolution@swift.org> wrote:

--
Dave