Call-by-name




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



< Previous Terms Terms Containing call-by-name Next Terms >
Calendar Application Programming Interface
Caliban
Calico
California State University San Marcos
callback
ALGOL 60
argument
call-by-name
call-by-reference
call-by-value
call-by-need
call-by-reference
call-by-value
call-by-value-result
call/cc