Specifying Types of Expression in Patterns
You can tell a lot about what "type" of expression something is by looking at its head. Thus, for example, an integer has head Integer, while a list has head List.
In a pattern,
and
represent expressions that are constrained to have head h. Thus, for example,
represents any integer, while
represents any list.
| x_h | an expression with head h |
| x_Integer | an integer |
| x_Real | an approximate real number |
| x_Complex | a complex number |
| x_List | a list |
| x_Symbol | a symbol |
Patterns for objects with specified heads.
This replaces just those elements that are integers.
| Out[1]= |  |
You can think of making an assignment for
as like defining a function
that must take an argument of "type" Integer.
This defines a value for the function

when its argument is an integer.
The definition applies only when the argument of

is an integer.
| Out[3]= |  |
The object

has head
Real, so the definition does not apply.
| Out[4]= |  |
This defines values for expressions with integer exponents.
The definition is used only when the exponent is an integer.
| Out[6]= |  |