I'm working my way through the Coursera course on functional programming in Scala and have encountered behavior that appears to differ from the language's description. According to the lecture on pattern matching, the output of the second println statement should be false rather than true in the following Scala spreadsheet:
object MatchTest {
def test(char: Char, list: List[Char]): Boolean = list match {
case char :: tail => true
case _ => false
} //> test: (char: Char, list: List[Char])Boolean
println(test('a', "ab".toList)) //> true
println(test('b', "ab".toList)) //> true
}
Why does the second test match on char :: tail and not match on _?