[swift-evolution] Reduce with inout
David Hart
david at hartbit.com
Wed Jan 25 01:09:31 CST 2017
Yep, that's really good.
> On 25 Jan 2017, at 08:00, Jonathan Hull via swift-evolution <swift-evolution at swift.org> wrote:
>
> +1 Best so far.
>
>> On Jan 24, 2017, at 10:36 AM, Pyry Jahkola via swift-evolution <swift-evolution at swift.org> wrote:
>>
>>
>> Freak Show wrote:
>>
>>> Am I the only one who finds this incredibly ugly and hard to read?
>>>
>>> This is more or less solved by inject:into: idiom. There is no reason for inout for this particular problem.
>>
>> Yeah, the original signature seems more useful. If you go all `inout` like Gwendal suggested, you might as well just iterate over the sequence with `for x in xs`, updating the state as you go.
>>
>> But your comment brought another idea to mind: if `mutating:` is considered a bad name for a non-`inout` argument, how about `reduce(into:combine:)`, similar to what Karl suggested earlier in this thread?
>>
>> I think it reads very well at the call site, does not suggest `inout`ness of the argument too much (of course there's no `&` at the call site either), and it's still easily found with auto-completion:
>>
>> let counts = words.reduce(into: [:]) {
>> $0[$1] = ($0[$1] ?? 0) + 1
>> }
>>
>> — Pyry
>> _______________________________________________
>> 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170125/c59689c0/attachment.html>
More information about the swift-evolution
mailing list