[swift-evolution] Reduce with inout
Karl Wagner
razielim at gmail.com
Tue Jan 17 16:11:46 CST 2017
> On 17 Jan 2017, at 23:09, Karl Wagner <karl.swift at springsup.com> wrote:
>
>
>> On 16 Jan 2017, at 14:49, Chris Eidhof via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>>
>> Hi,
>>
>> How does everyone feel about adding a second version of `reduce` to `Sequence`? Instead of a `combine` function that's of type `(A, Element) -> A`, it would be `(inout A, Element) -> ()`. This way, we can write nice functionals algorithms, but have the benefits of inout (mutation within the function, and hopefully some copy eliminations).
>>
>> IIRC, Loïc Lecrenier first asked this on Twitter. I've been using it ever since, because it can really improve readability (the possible performance gain is nice, too).
>>
>> Here's `reduce` with an `inout` parameter, including a sample: https://gist.github.com/chriseidhof/fd3e9aa621569752d1b04230f92969d7 <https://gist.github.com/chriseidhof/fd3e9aa621569752d1b04230f92969d7>
>>
>> --
>> Chris Eidhof
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-evolution
>
> +1
>
> I would even argue for it to be the default.
I mean, assuming having two “reduce”s would stress the typechecker, as Joe suggested it might, I would say “inout” makes sense to be the default and the other one can find itself a new name.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170117/e6e9dead/attachment.html>
More information about the swift-evolution
mailing list