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