A.4.1 The Standard Evaluation Sequence
The following is the sequence of steps that Mathematica follows in evaluating an expression like h[, , ... ]. Every time the expression changes, Mathematica effectively starts the evaluation sequence over again.
• If the expression is a raw object (e.g., Integer, String, etc.), leave it unchanged.
• Evaluate the head h of the expression.
• Evaluate each element of the expression in turn. If h is a symbol with attributes HoldFirst, HoldRest, HoldAll or HoldAllComplete, then skip evaluation of certain elements.
• Unless h has attribute HoldAllComplete strip the outermost of any Unevaluated wrappers that appear in the .
• Unless h has attribute SequenceHold, flatten out all Sequence objects that appear among the .
• If h has attribute Flat, then flatten out all nested expressions with head h.
• If h has attribute Listable, then thread through any that are lists.
• If h has attribute Orderless, then sort the into order.
• Unless h has attribute HoldAllComplete, use any applicable transformation rules associated with f that you have defined for objects of the form h[ f[, ... ], ... ].
• Use any built-in transformation rules associated with f for objects of the form h[ f[, ... ], ... ].
• Use any applicable transformation rules that you have defined for h[, , ... ] or for h[ ... ][ ... ].
• Use any built-in transformation rules for h[, , ... ] or for h[ ... ][ ... ].