title: itertools.accumulate() versus functools.reduce()
body: <p>In Python 3.3, <a href="http://docs.python.org/3.3/library/itertools.html#itertools.accumulate" rel="noreferrer"><code>itertools.accumulate()</code></a>, 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 <a href="http://docs.python.org/3.3/library/functools.html#functools.reduce" rel="noreferrer"><code>functools.reduce()</code></a>. With a cursory look, the main differences between the two now would seem to be:</p>
  
  <ol>
  <li><code>accumulate()</code> defaults to summing but doesn't let you supply an extra initial condition explicitly while <code>reduce()</code> doesn't default to any method but does let you supply an initial condition for use with 1/0-element sequences, and</li>
  <li><code>accumulate()</code> takes the iterable first while <code>reduce()</code> takes the function first.</li>
  </ol>
  
  <p>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?</p>