Lazy evaluation: Difference between revisions

m
Reference
m (Removed from enc)
m (Reference)
Line 7:
There exist two major contexts where laziness of evaluation is considered:
 
* When the expression value does not depend on the evaluation time, which is usually the case for [[functional programingprogramming]] languages. In this context lazy evaluation can be used for optimization purposes and as light-weight [[closures]]. Constants folding is an example of eager evaluation optimization. [[Haskell]]'s handling of infinite lists is an example of lazy evaluation.
 
* When the expression value depends on the evaluation time, laziness changes the program semantics. This type of laziness is used in low-level [[concurrent programming]], when the state of an object might change asynchronously to the program. Such objects are usually marked as ''volatile'', and their values are acquired as late as possible. Further, the compiler is instructed not to store them when evaluating temporal expressions.