This is documentation for Mathematica 3, which was
based on an earlier version of the Wolfram Language.
View current documentation (Version 11.1)
 Documentation / Mathematica / Built-in Functions / New in Version 3.0 / Programming  /
HoldPattern

  • HoldPattern[ expr ] is equivalent to expr for pattern matching, but maintains expr in an unevaluated form.
  • HoldPattern has attribute HoldAll.
  • The left-hand sides of rules are usually evaluated, as are parts of the left-hand sides of assignments. You can use HoldPattern to stop any part from being evaluated.
  • Example: expr /. HoldPattern[Integrate[y_, x_]] -> rhs transforms any subexpression of the form Integrate[y_, x_] in expr. Without the HoldPattern, the Integrate[y_, x_] in the rule would immediately be evaluated to give x_ y_, and the replacement would not work.
  • Example: f[HoldPattern[Integrate[y_, x_]]] := value can be used to make an assignment for expressions of the form f[Integrate[y_, x_]]. Without HoldPattern, the Integrate function would be evaluated at the time of assignment.
  • See the Mathematica book: Section 2.5.6.
  • See also: Hold, Verbatim.

    Further Examples

    Patterns are not considered to be special outside the context of the pattern matcher.

    In[1]:=

    Out[1]=

    For instance, arithmetic operations work on patterns in the same way as on any other symbolic entity.

    In[2]:=

    Out[2]=

    Use HoldPattern when you want to control the evaluation of patterns.

    In[3]:=

    Out[3]=