Understanding Type Members
<p>Given a trait:</p>

<pre><code>scala&gt; trait Fn { 
     |  type A
     |  type B
     |  def f(x: A): B
     | }
defined trait Fn
</code></pre>

<p>I'd like to override <code>Fn</code> with another <code>trait</code> such that:</p>

<ul>
<li>if <code>A</code> is a <code>String</code>, then <code>B</code> must be an <code>Int</code>, otherwise make <code>B</code>'s type a <code>Boolean</code></li>
</ul>

<p>How can I do this?</p>