The benefits of lazy evaluation include: performance increases due to avoiding unnecessary calculations, avoiding error conditions in the evaluation of compound expressions, the capability of constructing potentially infinite data structures, and the capability of defining control structures as abstractions instead of as primitives.
In computer windowing systems, the painting of information to the screen is driven by "expose events" which drive the display code at the last possible moment. By doing this, they avoid the computation of unnecessary display content
The opposite of lazy actions is eager evaluation, sometimes known as <I>strict evaluation</I>. Eager evaluation is the evaluation behavior used in most programming languages.
Lazy evaluation refers to how expressions are evaluated when they are passed as arguments to functions and entails the following three points: