[Python-ideas] Rehabilating reduce (as "fold")

Antoine Pitrou solipsis at pitrou.net
Fri Jul 12 09:49:56 CEST 2013


On Fri, 12 Jul 2013 16:01:07 +1000
Nick Coghlan <ncoghlan at gmail.com> wrote:
> The strange contortions of the "fast sum for lists" discussions got me
> wondering about whether it was possible to rehabilitate reduce with a less
> error-prone API. It was banished to functools in 3.0 because it was so
> frequently used incorrectly, but now its disfavour seems to be causing
> people to propose ridiculous things.

I would disagree with this interpretation. reduce() wasn't
"banished" (what a strange qualification!) because its API was
"error-prone", but because the whole concept isn't very useful -
and, indeed, little used - in a language like Python.

> So, what if we instead added a new alternative API based on Haskell's
> "fold" [1] where the initial value is *mandatory*:
> 
>     def fold(op, start, iterable):
>         ...

So fold(op, start, iterable) is the same as reduce(op, iterable, start)?
This sounds silly and useless.

Regards

Antoine.




More information about the Python-ideas mailing list