Match Expressions
The syntactical precedence of match expressions has been changed. match is still a keyword, but it is used like an alphabetical operator. This has several consequences:
-  matchexpressions can be chained:xs match { case Nil => "empty" case _ => "nonempty" } match { case "empty" => 0 case "nonempty" => 1 }(or, dropping the optional braces) xs match case Nil => "empty" case _ => "nonempty" match case "empty" => 0 case "nonempty" => 1
-  matchmay follow a period:if xs.match case Nil => false case _ => true then "nonempty" else "empty"
- The scrutinee of a match expression must be an InfixExpr. Previously the scrutinee could be followed by a type ascription: T, but this is no longer supported. Sox : T match { ... }now has to be written(x: T) match { ... }.
Syntax
The new syntax of match expressions is as follows.
InfixExpr    ::=  ...
               |  InfixExpr MatchClause
SimpleExpr   ::=  ...
               |  SimpleExpr ‘.’ MatchClause
MatchClause  ::=  ‘match’ ‘{’ CaseClauses ‘}’