[swift-evolution] [Accepted with modifications] SE-0045: Add scan, prefix(while:), drop(while:), and unfold to the stdlib
Matthew Johnson
matthew at anandabits.com
Fri May 6 20:26:37 CDT 2016
> On May 6, 2016, at 8:15 PM, Dave Abrahams via swift-evolution <swift-evolution at swift.org> wrote:
>
>
> on Fri May 06 2016, Matthew Johnson <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>
>>> On May 6, 2016, at 7:30 PM, Dave Abrahams via swift-evolution <swift-evolution at swift.org> wrote:
>>>
>>>
>>> on Fri May 06 2016, Cole Campbell <swift-evolution at swift.org> wrote:
>>>
>>>> I don't know if it's considered too late at this point to rename 'reduce', but
>>>> I'll add an enthusiastic +1 to renaming it to 'fold' and adding 'unfold'. 'Fold'
>>>> is just as obvious a name as 'reduce', IMO (actually I even prefer
>>>> it).
>>>
>>> It's not, IMO. “Reduce” was chosen deliberately over “fold” because we
>>> think it is more in “common currency” among programmers, in no small
>>> part to the notice that MapReduce has gotten.
>>
>> I was guessing this was the rationale. But if it’s not too late and
>> “fold” solves the “unfold” naming problem maybe we that balances out
>> the equation.
>
> Personally, I'm not confident “unfold” would be considered to meet the
> utility bar, even if we changed the name of “reduce,” FWIW.
>
>> Which name do you think best communicates the essence of the
>> operation? IMO “fold” does a much better job of this.
>
> Personally I think “accumulate” does that better than either name, but
> it doesn't matter. What matters, IMO, is what more people will be
> familiar with.
Fair enough.
FWIW, the reason I like fold is that it helps me to visualize the process mentally.
>
>>
>>
>>>
>>>> I think changing it now with other source-breaking changes is better
>>>> than moving forward with 'reduce' and a corresponding function with a
>>>> confusing name. Fold/unfold would fit in beautifully with the
>>>> prefix/suffix pairings already in the standard library.
>>>>
>>>> Cole
>>>>
>>>> On May 6, 2016, at 1:29 AM, David Hart via swift-evolution
>>>> <swift-evolution at swift.org> wrote:
>>>>
>>>> If we are discussing naming changes to reduce, here's my personal opinion:
>>>>
>>>> * When I first encountered it, I understood exactly what it did because I
>>>> knew that term of art. If it was named sequence, I would have been confused.
>>>> * If we are discussing name changes, I'd personally vote to change it to
>>>> fold. It is the other term of art used for it, and it makes unfold work.
>>>>
>>>> David
>>>>
>>>> On 05 May 2016, at 22:39, Chris Lattner via swift-evolution
>>>> <swift-evolution at swift.org> wrote:
>>>>
>>>> On May 5, 2016, at 1:03 PM, Erica Sadun <erica at ericasadun.com>
>>>> wrote:
>>>>
>>>> On May 4, 2016, at 5:50 PM, Chris Lattner via swift-evolution
>>>> <swift-evolution at swift.org> 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.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.
>>>>
>>>> I’m not a naming guru, but my understanding is that ‘reduce’ was picked
>>>> because it was term of art (like map), which is what allowed the misuse
>>>> of a verb.
>>>>
>>>> One idea that came out of the core team discussion was something like:
>>>>
>>>> sequence(from: 0) { $0 += 42 }
>>>>
>>>> Since it returns a sequence.
>>>>
>>>> -Chris
>>>>
>>>> _______________________________________________
>>>> swift-evolution mailing list
>>>> swift-evolution at swift.org
>>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>>>
>>>> _______________________________________________
>>>> swift-evolution mailing list
>>>> swift-evolution at swift.org
>>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>>>
>>>> _______________________________________________
>>>> swift-evolution mailing list
>>>> swift-evolution at swift.org
>>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>>
>>> --
>>> Dave
>>>
>>> _______________________________________________
>>> swift-evolution mailing list
>>> swift-evolution at swift.org
>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
>
> --
> Dave
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160506/d46bdaa7/attachment.html>
More information about the swift-evolution
mailing list