In Python 3.3, itertools.accumulate(), which normally repeatedly applies an addition operation to the supplied iterable, can now take a function argument as a parameter; this means it now overlaps with functools.reduce(). With a cursory look, the main differences between the two now would seem to be:
accumulate()defaults to summing but doesn't let you supply an extra initial condition explicitly whilereduce()doesn't default to any method but does let you supply an initial condition for use with 1/0-element sequences, andaccumulate()takes the iterable first whilereduce()takes the function first.
Are there any other differences between the two? Or is this just a matter of behavior of two functions with initially distinct uses beginning to converge over time?