(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 implemeNTfunctional 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)