title: How to sum fields of collection elements without mapping them first (like foldLeft/reduceLeft)?
body: <p>Consider this class:</p>
  
  <pre><code> case class Person(val firstName: String, val lastName: String, age: Int)
   val persons = Person("Jane", "Doe", 42) :: Person("John", "Doe", 45) :: 
                 Person("Joe", "Doe", 43) :: Person("Doug", "Don", 65) :: 
                 Person("Darius", "Don", 24) :: Person("Dora", "Don", 20) :: 
                 Person("Dane", "Dons", 29) :: Nil
  </code></pre>
  
  <p>To get the sum of the age of all persons, I can write code like:</p>
  
  <pre><code>persons.foldLeft(0)(_ + _.age)
  </code></pre>
  
  <p>But if I want to use <code>sum</code>, I need to map the value first and the code looks like this:</p>
  
  <pre><code>persons.map(_.age).sum
  </code></pre>
  
  <p>How can I use the <code>sum</code> method <em>without</em> creating some intermediate collection?</p>
  
  <p>(I know that such an "optimization" most probably doesn't have any real performance difference when not run in a tight loop and I also know about lazy views and so on.)</p>
  
  <p>Is it possible to have code like</p>
  
  <pre><code>persons.sum(_.age)
  </code></pre>
  
  <p>doing what <code>foldLeft</code>/<code>reduceLeft</code> does?</p>