[swift-evolution] Reduce with inout

Chris Eidhof chris at eidhof.nl
Wed Jan 25 03:06:03 CST 2017


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> wrote:

> 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
>
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
>


-- 
Chris Eidhof
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170125/1992a58f/attachment.html>


More information about the swift-evolution mailing list