VDict mobile



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