Mathematica normally takes any expression it is given, and evaluates it as far as possible. But built into the
Mathematica language is a collection of flexible primitives that allow finer control over the process of evaluation in cases where it is needed.
Evaluation Control for Complete Expressions
Hold — hold an expression unevaluated
HoldForm — display an expression in unevaluated form
Defer — display unevaluated, but evaluate if given as
Mathematica input
Evaluation Control for Function Arguments
HoldAll,
HoldFirst,
HoldRest — attributes for specifying held function arguments
Evaluate — immediately evaluate a function argument
Unevaluated — pass a function argument unevaluated
ReleaseHold — release hold constructs
NHoldAll,
NHoldFirst,
NHoldRest — prevent numerical evaluation of arguments
Manipulating Unevaluated Expressions
With — insert variable values without evaluation
Extract — extract numbered parts without evaluation
ToString,
ToExpression — convert to and from string form
Global Evaluation Control