Alternative patterns
Alternative patterns can be given for a case clause using the
|
operator. If any of the patterns match then the clause matches.
If a pattern defines a variable then all of the alternative patterns for that clause must also define a variable with the same name and same type.
Currently it is not possible to have nested alternative patterns, so the
pattern [1 | 2 | 3]
is not valid.