title: Scala 2.8 breakOut
body: <p>In Scala <strong>2.8</strong>, there is an object in <code>scala.collection.package.scala</code>:</p>
  
  <pre><code>def breakOut[From, T, To](implicit b : CanBuildFrom[Nothing, T, To]) =
      new CanBuildFrom[From, T, To] {
          def apply(from: From) = b.apply() ; def apply() = b.apply()
   }
  </code></pre>
  
  <p>I have been told that this results in:</p>
  
  <pre><code>&gt; import scala.collection.breakOut
  &gt; val map : Map[Int,String] = List("London", "Paris").map(x =&gt; (x.length, x))(breakOut)
  
  map: Map[Int,String] = Map(6 -&gt; London, 5 -&gt; Paris)
  </code></pre>
  
  <p>What is going on here? Why is <code>breakOut</code> being called <em>as an argument</em> to my <code>List</code>?</p>