(CBN) (Normal order reduCTIon, leftmost, outermost 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 some code which will return the value of the argument and an environment giving the values of its free variables. This {evaluation strategy} is guaranteed to reach a {normal form} if one exists. When used to implement funCTIonal programming languages, call-by-name is usually combined with graph reduCTIon to avoid repeated evaluation of the same expression. This is then known as call-by-need. 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. (1994-11-29)