title: In Scala, why do I get this "polymorphic expression cannot be instantiated to expected type"?
body: <p>Why does the following occur in Scala 2.9.0.1?</p>
  
  <pre><code>scala&gt; def f(xs: Seq[Either[Int,String]]) = 0
  f: (xs: Seq[Either[Int,String]])Int
  
  scala&gt; val xs = List(Left(0), Right("a")).iterator.toArray
  xs: Array[Product with Serializable with Either[Int,java.lang.String]] = Array(Left(0), Right(a))
  
  scala&gt; f(xs)
  res39: Int = 0
  
  scala&gt; f(List(Left(0), Right("a")).iterator.toArray)
  &lt;console&gt;:9: error: polymorphic expression cannot be instantiated to expected type;
   found   : [B &gt;: Product with Serializable with Either[Int,java.lang.String]]Array[B]
   required: Seq[Either[Int,String]]
         f(List(Left(0), Right("a")).iterator.toArray)
                                              ^
  </code></pre>
  
  <p><strong>Update</strong>: Debilski suggests a better example (not 100% sure this is demonstrating the same underlying phenomenon):</p>
  
  <pre><code>Seq(0).toArray : Seq[Int] // compiles
  Seq(Some(0)).toArray : Seq[Option[Int]] // doesn't
  </code></pre>