The technique of evaluating an expression at the last moment (and no expression is evaluated more than once) so as to avoid unnecessary effort or working with values that might have changed. Laziness is practically limited to the declarative programming paradigm. Laziness is a useful notion in large, complex agents systems where you wish to examine some constrained results without exercising (or even explicitly representing) the entire system.
NCL: The process whereby relational expressions are assigned a value as soon as it is possible to do so, without necessarily evaluating all of the components in the expression. For example, the expression (1 .lt. 3) .or. (2 .lt. 1) can be assigned the value True immediately after evaluating (1 .lt. 3) without having to evaluate (2 .lt. 1).
A method of evaluating a logical expression where evaluation halts after further evaluation could produce no change in the result. For example, when evaluating a string of sub-expressions linked by a logical AND, a lazy evaluator would halt after the first false sub-expression, because evaluation of subsequent sub-expressions would not change the result.
(n.) A Scheduling policy under which no calculation is begun until it is certain that its result is needed. This policy contrasts with the eager evaluation used in most programs, but is often used in functional and logic programming. See also dataflow, dependence, dependence graph, futures.
In computer programming, lazy evaluation, also called delayed evaluation, is the technique of delaying a computation until such time as the result of the computation is known to be needed.