C'est une triste réalité de Scala que si vous instanciez une liste [Int], vous pouvez vérifier que votre instance est une liste, et vous pouvez vérifier que tout élément individuel de celle-ci est un int, mais pas qu'il s'agit d'une liste [ Int], comme cela peut être facilement vérifié:
scala> List(1,2,3) match {
     | case l : List[String] => println("A list of strings?!")
     | case _ => println("Ok")
     | }
warning: there were unchecked warnings; re-run with -unchecked for details
A list of strings?!L'option -unchecked met le blâme carrément sur l'effacement de type:
scala>  List(1,2,3) match {
     |  case l : List[String] => println("A list of strings?!")
     |  case _ => println("Ok")
     |  }
<console>:6: warning: non variable type-argument String in type pattern is unchecked since it is eliminated by erasure
        case l : List[String] => println("A list of strings?!")
                 ^
A list of strings?!Pourquoi cela, et comment puis-je contourner ce problème?
scala 2.10.2, j'ai vu cet avertissement à la place: <console>:9: warning: fruitless type test: a value of type List[Int] cannot also be a List[String] (but still might match its erasure)               case list: List[String] => println("a list of strings?")                          ^je trouve que votre question et votre réponse sont très utiles, mais je ne sais pas si cet avertissement mis à jour est utile aux lecteurs.