[swift-evolution] Reduce with inout

Daniel Duan daniel at duan.org
Tue Apr 11 12:01:34 CDT 2017


Ping.

What’s the latest on this proposal? Seems like a clear win to me. It seems the thread converged on a name if we want 2 versions of reduce. Should we simply replace the existing version so there’s only one?

Really wish this can get in Swift 4.
> On Jan 25, 2017, at 1:06 AM, Chris Eidhof via swift-evolution <swift-evolution at swift.org> wrote:
> 
> I like it too! Thanks Pyry! Will change the proposal.
> 
> On Wed, Jan 25, 2017 at 8:09 AM, David Hart via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
> Yep, that's really good.
> 
> On 25 Jan 2017, at 08:00, Jonathan Hull via swift-evolution <swift-evolution at swift.org <mailto: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 <mailto: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 <mailto:swift-evolution at swift.org>
>>> https://lists.swift.org/mailman/listinfo/swift-evolution <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>
> 
> _______________________________________________
> 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>
> 
> 
> 
> 
> -- 
> Chris Eidhof
> _______________________________________________
> 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/20170411/b697b10d/attachment.html>


More information about the swift-evolution mailing list