lazy evaluation
<reduction> An evaluation strategy combining normal order evaluation with
updating. Under normal order evaluation (outermost or call-by-name evaluation)
an expression is evaluated only when its value is needed in order for the
program to return (the next part of) its result. Updating means that if an
expression's value is needed more than once (i.e. it is shared), the result of
the first evaluation is remembered and subsequent requests for it will return
the remembered value immediately without further evaluation. This is often
implemented by graph reduction. An unevaluated expression is represented as a
closure - a data structure containing all the information required to evaluate
the expression.
Lazy evaluation is one evaluation strategy used to implement non-strict
functions. Function arguments may be infinite data structures (especially lists)
of values, the components of which are evaluated as needed.
According to Phil Wadler the term was invented by Jim Morris.
Opposite: eager evaluation.
A partial kind of lazy evaluation implements lazy data structures or especially
lazy lists where function arguments are passed evaluated but the arguments of
data constructors are not evaluated.
Full laziness is a program transformation which aims to optimise lazy evaluation
by ensuring that all subexpressions in a function body which do not depend on
the function's arguments are only evaluated once.
(1994-12-14)
Nearby terms:
layer « Layer Two Tunneling Protocol « laziness «
lazy evaluation » lazy list » Lazy SML » lazy
sml2c
lazy list
A list which is built using a non-strict constructor. Any head or tail of the
list may be an unevaluated closure. Also known as streams since they may be used
to carry a sequence of values from the output of one function to an input of
another. See also Lazy evaluation.
Nearby terms:
Layer Two Tunneling Protocol « laziness « lazy
evaluation «
lazy list » Lazy SML » lazy sml2c » Lazy
Standard ML
Lazy SML
Lazy Standard ML
Nearby terms:
laziness « lazy evaluation « lazy list « Lazy SML
» lazy sml2c » Lazy Standard ML » lb
lazy sml2c
A lazy version sml2c. Portable, written in SML. Language extensions include
first-class continuations, asynchronous signal handling.
E-mail: <david.tarditi@cs.cmu.edu>.
ftp://dravido.soar.cs.cmu.edu/usr/nemo/sml2c.
Nearby terms:
lazy evaluation « lazy list « Lazy SML « lazy
sml2c » Lazy Standard ML » lb » LBA
Lazy Standard ML
<language> (LSML) A lazy varient of SML, allowing cyclic val definitions,
by Prateek Mishra <mishra@sbcs.sunysb.edu>.
Latest version: 0.43-1, as of 1993-11-15.
Not to be confused with LML.
ftp://sbcs.sunysb.edu/pub/lsml.
(1999-08-30)
Nearby terms:
lazy list « Lazy SML « lazy sml2c « Lazy Standard
ML
» lb » LBA » LBE
|