reduction). An argument passing convention (first provided by ALGOL 60?) where argument expressions are passed unevaluated. This is usually implemented by passing a pointer to a thunk - some code which will return the value of the argument and an environment giving the values of its [[Computer Dictionary/free variables|free variables]].
This evaluation strategy is guaranteed to reach a [[Computer Dictionary/normal form|normal form]] if one exists.
The opposite of call-by-name is call-by-value where arguments are evaluated before they are passed to a function. This is more efficient but is less likely to terminate in the presence of infinite data structures and recursive functions.
Arguments to macros are usually passed using call-by-name.