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, _h
represent expressions that are constrained to have head h
. Thus, for example, _Integer
represents any integer, while _List
represents any list.
|x_h||an expression with head h|
|x_Real||an approximate real number|
|x_Complex||a complex number|
Patterns for objects with specified heads.
This replaces just those elements that are integers.
You can think of making an assignment for f[x_Integer]
as like defining a function f
that must take an argument of "type" Integer
This defines a value for the function gamma
when its argument is an integer.
The definition applies only when the argument of gamma
is an integer.
The object 4.
has head Real
, so the definition does not apply.
This defines values for expressions with integer exponents.
The definition is used only when the exponent is an integer.