> On Jan 17, 2017, at 16:11, Karl Wagner via swift-evolution > <[email protected]> wrote: > > >>> On 17 Jan 2017, at 23:09, Karl Wagner <[email protected]> wrote: >>> >>> >>> On 16 Jan 2017, at 14:49, Chris Eidhof via swift-evolution >>> <[email protected]> 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 >>> >>> -- >>> Chris Eidhof >>> _______________________________________________ >>> swift-evolution mailing list >>> [email protected] >>> 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.
IIRC, the "reduce" name comes from functional programming... should the functional style keep the functional name? - Dave Sweeris
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
