On May 6, 2016, at 6:27 PM, Dave Abrahams via swift-evolution <[email protected]> wrote: > > > on Thu May 05 2016, Erica Sadun <[email protected] > <mailto:[email protected]>> wrote: > >> On May 4, 2016, at 5:50 PM, Chris Lattner via swift-evolution >> <[email protected]> wrote: >> >> Proposal link: >> >> https://github.com/apple/swift-evolution/blob/master/proposals/0045-scan-takewhile-dropwhile.md >> >> Sequence.prefix(while:) & Sequence.drop(while:) - These are *accepted* as >> specified in revision 3 of the proposal. >> >> I'm still a little sad we didn't go for `prefix`/`suffix` or `take`/`drop` >> pairs >> that linguistically matched. > > I think building an API family around “prefix” and “suffix” that covers > this and other functionality is a great idea, and would make a great > proposal** > > This whole area needs some design love. Among other things, > > s.prefix(4) > > should be > > s.prefix(ofMaxLength: 4) > > ** though we haven't been able to completely eliminate the moral > equivalent of “drop” from the “dropWhile” function, whatever it's > eventually called, in any of our experiments
I'm sure that Kevin or I or some other proposalista could put together a quick fast-track rename request for * suffix(n) -> Self.SubSequence // requires `n >= 0`, `n <= count` * suffix(maxLength: n) -> Self.SubSequence // requires `n >= 0` * suffix(while: predicate) -> Self.SubSequence * prefix(n) -> Self.SubSequence * prefix(maxLength: n) -> Self.SubSequence * prefix(while: predicate) -> Self.SubSequence > Nonetheless I'm gratified these are hopping into the language. That >> said, I'm going to put on my painters cap to consider selecting some >> exterior latex for the feature I was most looking forward to in this >> proposal: >> >> Core team writes: >> >> unfold(_:applying:) - This addition is *rejected* by the core team as >> written, but deserves more discussion in the community, and potentially >> could be the subject of a future proposal. The core team felt that the >> utility of this operation is high enough to be worth including in the >> standard library, but could not find an acceptable name for it. “unfold” >> is >> problematic, despite its precedence in other language, because Swift calls >> the corresponding operation “reduce” and not “fold”. No one could get >> excited about “unreduce”. “iterate” was also considered, but a noun is >> more >> appropriate than an verb in this case. Given the lack of a good name, the >> core team preferred to reject to let the community discuss it more. >> >> A few thoughts: >> >> * I'm not sure why a noun is more appropriate than a verb. Reduce isn't a >> noun, >> prefix isn't a noun, drop isn't a noun. > > Can't let that one go by; prefix is definitely a noun :-) I knew you'd point that out. It's not a noun when it's wearing its "I AM VERBING" t-shirt. That aside, the prevailing sentiment is to rename reduce to `fold` and partner it with `unfold`. (I personally prefer Chris's `sequence` because I think it better reflects how more Swift users will use it (never for;;get; never sur;;render). But I recognize that terms of art have a strength of momentum and familiarity.) -- E
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
