title: What's the reasoning behind adding the "case" keyword to Scala?
body: <p>Apart from:</p>
  
  <pre><code>case class A
  </code></pre>
  
  <p>... <em>case</em> which is quite useful?</p>
  
  <p>Why do we need to use <code>case</code> in <code>match</code>? Wouldn't:</p>
  
  <pre><code>x match {
    y if y &gt; 0 =&gt; y * 2
    _ =&gt; -1
  }
  </code></pre>
  
  <p>... be <strong>much</strong> prettier and concise?</p>
  
  <p>Or why do we need to use <code>case</code> when a function takes a tuple? Say, we have:</p>
  
  <pre><code>val z = List((1, -1), (2, -2), (3, -3)).zipWithIndex
  </code></pre>
  
  <p>Now, isn't:</p>
  
  <pre><code>z map { case ((a, b), i) =&gt; a + b + i }
  </code></pre>
  
  <p>... <em>way</em> uglier than just:</p>
  
  <pre><code>z map (((a, b), i) =&gt; a + b + i)
  </code></pre>
  
  <p>...?</p>