Steven D'Aprano wrote:
Calling all functional programming fans... is Python's built-in reduce() a left-fold or a right-fold? ... So which is correct? Or is it that different people have different definitions of foldl() and foldr()?

Just test.  Floating point addition is not associative, so:

>>> a = reduce(float.__add__, (4095 * 2. **n for n in range(100)))
>>> b = reduce(float.__add__,(4095*2.**n for n in reversed(range(100))))
>>> a - b
5.7646075230342349e+17

So, since a > b, it must be foldl (the first addition happens to the
first of the list).

Foldl is the eager-beaver's dream; foldr is the procrastinator's dream.

--Scott David Daniels
scott.dani...@acm.org
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to