I know there are ways like typetags to work around it, but on the JVM this is never going to run without extra work:<p><pre><code>    def erased[T](xs: List[T]) : String = {
      xs match {
        case ns : List[Int] =&gt;&quot;Natural numbers&quot;
        case fs : List[Double] =&gt; &quot;Floating point numbers&quot;
        case _ : List[T] =&gt; &quot;Something else&quot;
      }
    }
    System.out.println(erased(List(1,2,3)))
    System.out.println(erased(List(1.0,2.0,3.0)))
</code></pre>
Which is purely because of a JVM runtime limitation. Will native scala behave identically to JVM scala in this case or will you be able to improve?