Search the Archive
  Home
  Welcome to
  Station Information
  Mathematical and
  Natural Sciences

  Astronomy
  Biology
  Chemistry
  Computer science
  Earth science
  Ecology
  Health science
  Mathematics
  Physics
  Statistics
  Applied Arts
  and Sciences

  Agriculture
 
Architecture
  Business
  Communication
  Education
  Engineering
  Family and
  consumer science

  Government
  Law
  Library and information
  science

  Medicine
  Politics
  Public affairs
  Software engineering
  Technology
  Transport
  Social Sciences
  and Philosophy

  Archaeology
  Economics
  Geography
  History
  History of science
  and technology

  Language
  Linguistics
  Mythology
  Philosophy
  Political science
  Psychology
  Sociology
  Culture and
  Fine Arts

  Classics
  Cooking
  Dance
  Entertainment
  Film
  Games
  Gardening
  Handicraft
  Hobbies
  Holidays
  Internet
  Literature
  Music
  Opera
  Painting
  Poetry
  Radio
  Recreation
  Religion
  Sculpture
  Sports
  Television
  Theater
  Tourism
  Visual arts and design

Lazy evaluation


 
In computer programming, and in particular in functional languages, lazy evaluation is also known as non-strict evaluation. An expression, when lazily evaluated, is not evaluated as soon as it gets bound to a variable, but when something forces the evaluator to produce the expression's value.

Key advantages of lazy evaluation are, notably, that lazy evaluation allows programmers to produce infinite sequences without pushing the evaluator into an endless loop, and other neat things.

The opposite of lazy evaluation is eager evaluation, also known as strict evaluation which is the normal (and often only) evaluation method in most programming languages.

In the Scheme programming language, lazy evaluation (in Scheme jargon, "delayed" evaluation) can be forced by using (define delayed-expression (delay expression)). Then (force delayed-expression) will yield the value of expression.

There are some programming languages where expressions are lazily evaluated by default. Haskell is one such language.

Lazy evaluation as a design pattern

As well as the formal concept of lazy evaluation in functional languages, lazy evaluation is a design pattern often seen in general computer programming.

For example, in modern computer window managers, 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 over-eager computation of unnecessary display content.

Another example of laziness in modern computer systems is copy-on-write page allocation.

See also:

Compare:







Site Partners

Easy Encyclopedia
Small Business Forum
Free Web Templates
Free Mortgage Quote

  This content from wikipedia is licensed under the GNU Free Documentation License