full laziness

full laziness

(functional programming)
A transformation, described by Wadsworth in 1971, which ensures that subexpressions in a function body which do not depend on the function's arguments are only evaluated once. E.g. each time the function

f x = x + sqrt 4

is applied, (sqrt 4) will be evaluated. Since (sqrt 4) does not depend on x, we could transform this to:

f x = x + sqrt4 sqrt4 = sqrt 4

We have replaced the dynamically created (sqrt 4) with a single shared constant which, in a graph reduction system, will be evaluated the first time it is needed and then updated with its value.

See also fully lazy lambda lifting, let floating.
This article is provided by FOLDOC - Free Online Dictionary of Computing (foldoc.org)