Normal Order Evaluation

A Parameter Passing mode where parameters to a function are not evaluated until they are used; and are re-evaluated each time they are used. Compare with Lazy Evaluation and Strict Evaluation (but notice difference of opinion on Lazy Evaluation).

Found in:

Macro systems in many languages

Looping constructs in many languages; in the statement while(x) y; the x part is evaluated at least once (and possibly an infinite number of times); the y part is evaluated zero or more times.

Care must be taken when expressions containing side effects are passed to functions/macros that have normal order evaluation. C/C++ programmers have long known to be very careful with macros defined by Cee Preprocessor Statements.


See original on c2.com