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 / Built-in Functions / New in Version 3.0 / Programming  /

  • 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.



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



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