Questions about how Mathematica evaluates expressions, tracing evaluation (Trace), handling expressions in unevaluated form (Hold, Unevaluated), nonstandard evaluation, etc.
For questions about how and in what order Mathematica evaluates expressions, tracing evaluation (Trace family), handling expressions in unevaluated form (Hold, HoldForm, HoldPattern, Unevaluated, Defer), nonstandard or controlled evaluation (ReleaseHold, Evaluate), etc.
Questions about algebraic simplification of expressions should use simplifying-expressions. Questions about structural replacement/manipulation in/of held expressions should use expression-manipulation.
Useful links
- Principles of Evaluation (introducing evaluation concepts)
- Tutorial on Tracing Evaluation
- Guide on Evaluation Control
- Full guide on Evaluation
- Trott-Strzebonski in-place evaluation method and its explanation
Example questions
- Manipulate evaluation sequence
- How do I evaluate only one step of an expression?
- Injecting a sequence of expressions into a held expression
- How to inject an evaluated expression into a held expression?
- Implementing a safe ValueQ that does not evaluate its argument
- How to pass a symbolname to a function with any of the Hold attributes?