title: Is the Scala 2.8 collections library a case of "the longest suicide note in history"?
body: <p>I have just started to look at the <a href="http://lampsvn.epfl.ch/trac/scala/browser/scala/trunk/src/library/scala/collection" rel="noreferrer">Scala collections library re-implementation</a> which is coming in the imminent <strong>2.8</strong> release. Those familiar with the library from 2.7 will notice that the library, from a usage perspective, has changed little. For example...</p>
  
  <pre><code>&gt; List("Paris", "London").map(_.length)
  res0: List[Int] List(5, 6)
  </code></pre>
  
  <p>...would work in either versions. <strong>The library is eminently useable</strong>: in fact it's fantastic. However, those previously unfamiliar with Scala and <em>poking around to get a feel for the language</em> now have to make sense of method signatures like:</p>
  
  <pre><code>def map[B, That](f: A =&gt; B)(implicit bf: CanBuildFrom[Repr, B, That]): That
  </code></pre>
  
  <p>For such simple functionality, this is a daunting signature and one which I find myself struggling to understand. <strong>Not that I think Scala was ever likely to be the next Java</strong> (or /C/C++/C#) - I don't believe its creators were aiming it at that market - but I think it is/was certainly feasible for Scala to become the next Ruby or Python (i.e. to gain a significant commercial user-base)</p>
  
  <ul>
  <li>Is this going to put people off coming to Scala?</li>
  <li>Is this going to give Scala a bad name in the commercial world as an <em>academic plaything</em> that only dedicated PhD students can understand? Are <a href="http://en.wikipedia.org/wiki/Chief_technical_officer" rel="noreferrer">CTO</a>s and heads of software going to get scared off?</li>
  <li>Was the library re-design a sensible idea?</li>
  <li>If you're using Scala commercially, are you worried about this? Are you planning to adopt 2.8 immediately or wait to see what happens?</li>
  </ul>
  
  <p><a href="http://en.wikipedia.org/wiki/Steve_Yegge" rel="noreferrer">Steve Yegge</a> <a href="http://steve-yegge.blogspot.com/2008/06/rhinos-and-tigers.html" rel="noreferrer">once attacked Scala</a> (mistakenly in my opinion) for what he saw as its overcomplicated type-system. I worry that someone is going to have a field day spreading <a href="http://en.wikipedia.org/wiki/Fear,_uncertainty_and_doubt" rel="noreferrer">FUD</a> with this API (similarly to how Josh Bloch scared the <a href="http://en.wikipedia.org/wiki/Java_Community_Process" rel="noreferrer">JCP</a> out of adding closures to Java).</p>
  
  <p><strong>Note</strong> - <em>I should be clear that, whilst I believe that <a href="https://en.wikipedia.org/wiki/Joshua_Bloch" rel="noreferrer">Joshua Bloch</a> was influential in the rejection of the BGGA closures proposal, I don't ascribe this to anything other than his honestly-held beliefs that the proposal represented a mistake.</em></p>
  
  <hr/>
  
  <p>Despite whatever my wife and coworkers keep telling me, I don't think I'm an idiot: I have a good degree in mathematics from the <a href="http://www.ox.ac.uk/" rel="noreferrer">University of Oxford</a>, and I've been programming commercially for almost 12 years and in <a href="http://en.wikipedia.org/wiki/Scala_%28programming_language%29" rel="noreferrer">Scala</a> for about a year (also commercially).</p>
  
  <p><em>Note the inflammatory subject title is a <a href="http://en.wikipedia.org/wiki/The_longest_suicide_note_in_history" rel="noreferrer">quotation made about the manifesto of a UK political party</a> in the early 1980s</em>. This question is subjective but it is a genuine question, I've made it CW and I'd like some opinions on the matter.</p>