Computing Dictionary
call-by-name definition
reduction (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 a
thunk - 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.
(2006-05-27)