Por que a usinagem de padrões de scala não funciona em loops para correspondência de tipos?

Estou codificando contra uma API que me dá acesso ao sistema de arquivos remoto. A API retorna uma lista de arquivos e diretórios como lista de objetos de nó (pai para arquivo e diretório).

Eu quero trabalhar apenas em um diretório, ignorando arquivos. Eu tentei usar correspondência de padrão de tipo emfor loop mas não funciona:

for {
    dir: CSDir <- workarea.getChildren() // <-- I'm getting an error here complaining about type conversion
} {
    println(dir)
}

Aqui está um exemplo semelhante usando objetos básicos scala para executá-lo sem dependências:

val listOfBaseObjects:List[Any] = List[Any]("a string", 1:Integer);

for (x: String <- listOfObjects) {
  println(x)
}

Acabo usando uma correspondência regular de padrões no lado do loop for e isso funciona bem:

// This works fien
for (child <- workarea.getChildren()) {
  child match {
    case dir: CSDir => println(dir)
    case _ => println("do not nothing")
  }
}
Questão:

Você pode me dizer por que o primeiro / segundo exemplo não funciona no scala 1.9?

Na "Programação em Scala" ofor loop é anunciado para usar o mesmo padrão de correspondência que omatch então deve funcionar.

Se o for e o match forem diferentes, seria ótimo se você pudesse me indicar alguns artigos com mais detalhes. E quanto a correspondência de padrões na atribuição?

Atualizar:

Eu não posso aceitar uma resposta que afirma que é impossível pular elementos em loop, pois isso contradiz com o "Prog. In scala". Aqui está um fragmento da seção 23.1:

pat <- expr ... O padrãopat é correspondido um a um contra todos os elementos dessa lista. ... se a partida falhar, nenhum MatchError será lançado. Em vez disso, o elemento é simplesmente descartado da iteração

e, de fato, o exemplo a seguir funciona bem:

scala> val list = List( (1,2), 1, 3, (3,4))
scala> for ((x,y) <- list) { println (x +","+ y) }
1,2
3,4

Por que então a correspondência de tipos não funciona?

questionAnswers(3)

yourAnswerToTheQuestion