• HoldPattern[expr] is equivalent to expr for pattern matching, but maintains expr in an unevaluated form.
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.
• New in Version 3.