title: Fold and foldLeft method difference
body: <p>I am not sure what is the difference between <code>fold</code> and <code>foldLeft</code> in Scala.</p>
  
  <p>The question <a href="https://stackoverflow.com/questions/6253978/difference-between-fold-and-foldleft-or-foldright">Difference between fold and foldLeft or foldRight?</a> has an answer that talks about ordering. That is understandable. But I still don't understand why this works (from REPL):</p>
  
  <pre><code>scala&gt; Array("1","2","3").foldLeft(0)(_ + _.toInt)
  res6: Int = 6
  </code></pre>
  
  <p>but this does not:</p>
  
  <pre><code>scala&gt; Array("1","2","3").fold(0)(_ + _.toInt)
  &lt;console&gt;:8: error: value toInt is not a member of Any
                Array("1","2","3").fold(0)(_ + _.toInt)
                                                 ^
  </code></pre>
  
  <p>What does this error message mean?</p>
  
  <p>This line from the documentation is also confusing to me.</p>
  
  <blockquote>
    <p><strong>z</strong> - a neutral element for the fold operation; may be added to the
    result an arbitrary number of times, and must not change the result
    (e.g., Nil for list concatenation, 0 for addition, or 1 for
    multiplication.)</p>
  </blockquote>
  
  <p>Why will it be added <em>an arbitrary number of times</em>? I thought folding works differently.</p>