> On 17 Jan 2017, at 23:09, Karl Wagner <karl.sw...@springsup.com> wrote:
> 
> 
>> On 16 Jan 2017, at 14:49, Chris Eidhof via swift-evolution 
>> <swift-evolution@swift.org <mailto:swift-evolution@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@swift.org <mailto:swift-evolution@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. 
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to