title: Why would I use type T = <type> instead of trait[T]?
body: <p>Here is an observation I've had from <a href="http://www.artima.com/pins1ed/abstract-members.html" rel="nofollow">a chapter</a> in <em>Programming Scala</em>.</p>
  
  <p>In Scala, I often see the abstract trait pattern:</p>
  
  <pre><code>trait Abstract {
    type T
    def transform(x: T): T
    val initial: T
    var current: T
  }
  
  class Concrete extends Abstract {
    type T = String
    def transform(x: String) = x + x
    val initial = "hi"
    var current = initial
  }
  </code></pre>
  
  <p>Why would I choose the abstract trait pattern over parameterized generics?</p>
  
  <pre><code>trait Abstract[T] {
    def transform(x: T): T
    val initial: T
    var current: T
  }
  
  class Concrete extends Abstract[String]{
    def transform(x: String): x + x
    val initial: "hi"
    var current: initial
  }
  </code></pre>