This is documentation for Mathematica 3, which was
based on an earlier version of the Wolfram Language.
View current documentation (Version 11.2)
 Documentation / Mathematica / The Mathematica Book / Principles of Mathematica / Patterns  /

2.3.4 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 and x_h represent expressions that are constrained to have head h. Thus, for example, _Integer represents any integer, while _List represents any list.

Patterns for objects with specified heads.

  • This replaces just those elements that are integers.
  • In[1]:= {a, 4, 5, b} /. x_Integer -> p[x]


    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.
  • In[2]:= gamma[n_Integer] := (n - 1)!

  • The definition applies only when the argument of gamma is an integer.
  • In[3]:= gamma[4] + gamma[x]


  • The object 4. has head Real, so the definition does not apply.
  • In[4]:= gamma[4.]


  • This defines values for expressions with integer exponents.
  • In[5]:= d[x_^n_Integer] := n x^(n-1)

  • The definition is used only when the exponent is an integer.
  • In[6]:= d[x^4] + d[(a+b)^3] + d[x^(1/2)]