(CBN) (Normal order reduction, leftmost, outermost reduction). An argument passing convention (first provided bYALGOL 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)