Why is it not possible to chain pattern matching constructs? For instance, the following is legal, if nonsensical,
val a = ADT(5)
val b = a match {
case
Your intuition is correct; it's not nonsense—normally you would be able to chain infix operators in such a way, without parentheses (as other users have suggested). Indeed, match
used to be implemented as a method—and worked as an infix operator (left-associative by default)—so your alternate syntax would have worked. However, in Scala 2.5 match
was made a special language construct instead of a method. I don't know why that was done, but that's the reason: match
is not an infix operator despite seeming so.