title: Why is an anonymous class created when mixing in a trait?
body: <pre><code>scala&gt; class A
  defined class A
  
  scala&gt; trait B
  defined trait B
  </code></pre>
  
  <p>Creating an object of class <code>A</code> gives us:</p>
  
  <pre><code>scala&gt; new A
  res4: A = A@11ea3fc
  </code></pre>
  
  <p>But creating an object of class <code>A</code> with trait <code>B</code> mixed in gives us:</p>
  
  <pre><code>scala&gt; new A with B
  res3: A with B = $anon$1@172aa3f
  </code></pre>
  
  <p>Here we have an anonymous class (hinted by <code>anon</code>). Why ?</p>
  
  <p>Is this because the type <code>A with B</code> is regarded as a new type (and which was not defined with an identifier before) ?</p>