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]= |  |