Patterns Involving Alternatives
| patt1|patt2|... | a pattern that can have one of several forms |
Specifying patterns that involve alternatives.
This defines

to give

when its argument is either

or

.
The first two cases give

.
| Out[2]= |  |
You can also use alternatives in transformation rules.
| Out[3]= |  |
Here is another example, in which one of the alternatives is itself a pattern.
| Out[4]= |  |
When you use alternatives in patterns, you should make sure that the same set of names appear in each alternative. When a pattern like
matches an expression, there will always be a definite expression that corresponds to the object
. If you try to match a pattern like
, then there still will be definite expressions corresponding to
and
, but the unmatched one will be Sequence[ ].
Here

is used to name the head, which can be either

or

.
| Out[5]= |  |