HoldComplete[expr]
shields expr completely from the standard Wolfram Language evaluation process, preventing even upvalues associated with expr from being used.
HoldComplete
HoldComplete[expr]
shields expr completely from the standard Wolfram Language evaluation process, preventing even upvalues associated with expr from being used.
Details
- HoldComplete allows you to use an expression that has not undergone any evaluation.
- HoldComplete has attribute HoldAllComplete and performs no operations on its arguments.
- HoldComplete is removed by ReleaseHold. »
- HoldComplete[e1,e2,…] maintains a sequence of unevaluated expressions to which a function can be applied using Apply.
- HoldComplete is generated by default by MakeExpression and can be inserted as a wrapper by such functions as ToExpression and Extract. »
- Unlike Hold, HoldComplete[expr] remains unevaluated even if expr is of the form f[args] and upvalues for f have been defined.
Examples
open all close allBasic Examples (1)
Allow no subexpression to evaluate:
HoldComplete[1 + 1, Evaluate[1 + 2], Sequence[3, 4]]Evaluate the expression by applying ReleaseHold:
ReleaseHold[%]Scope (1)
Properties & Relations (6)
HoldComplete is the standard container with attribute HoldAllComplete:
Attributes[HoldComplete]HoldComplete[Sequence[a, b], 1 + 2]No form of evaluation control affects an expression with attribute HoldAllComplete:
HoldComplete[1 + 2]HoldComplete[Evaluate[1 + 2]]HoldComplete[Sequence[a, b]]g/:HoldComplete[g[x_]] := xHoldComplete[g[1]]Substitution still happens inside HoldComplete:
HoldComplete[f[1 + 2]] /. f[x_] :> g[x]ReleaseHold removes one level of HoldComplete:
ReleaseHold[HoldComplete[Sequence[1, 2]]]Hold is a milder form of HoldComplete that allows for some form of evaluation:
Hold[1 + 2]Hold[Evaluate[1 + 2]]Hold[Sequence[a, b]]g/:Hold[g[x_]] := xHold[g[1]]HoldComplete can be used to freeze the result of ToExpression before it is evaluated:
ToExpression["Sequence[a,b]", InputForm, HoldComplete]MakeExpression by default wraps the result in HoldComplete:
MakeExpression[RowBox[{"1", "+", "1"}], StandardForm]Possible Issues (2)
HoldComplete affects only evaluation; input transformations are still applied:
FullForm[HoldComplete[a - b, a / b]]HoldComplete does not prevent formatting:
HoldComplete[Grid[{{1, 2}, {3, 4}}]]Add DisableFormatting to prevent formatting:
HoldComplete[DisableFormatting[Grid[{{1, 2}, {3, 4}}]]]Tech Notes
Related Guides
Related Workflows
History
Introduced in 1996 (3.0)
Text
Wolfram Research (1996), HoldComplete, Wolfram Language function, https://reference.wolfram.com/language/ref/HoldComplete.html.
CMS
Wolfram Language. 1996. "HoldComplete." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/HoldComplete.html.
APA
Wolfram Language. (1996). HoldComplete. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/HoldComplete.html
BibTeX
@misc{reference.wolfram_2026_holdcomplete, author="Wolfram Research", title="{HoldComplete}", year="1996", howpublished="\url{https://reference.wolfram.com/language/ref/HoldComplete.html}", note=[Accessed: 13-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_holdcomplete, organization={Wolfram Research}, title={HoldComplete}, year={1996}, url={https://reference.wolfram.com/language/ref/HoldComplete.html}, note=[Accessed: 13-June-2026]}