Yep, that's really good.

> On 25 Jan 2017, at 08:00, Jonathan Hull via swift-evolution 
> <[email protected]> wrote:
> 
> +1  Best so far.
> 
>> On Jan 24, 2017, at 10:36 AM, Pyry Jahkola via swift-evolution 
>> <[email protected]> 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
>> [email protected]
>> https://lists.swift.org/mailman/listinfo/swift-evolution
> 
> _______________________________________________
> swift-evolution mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to