partial evaluation

Get Babylon's Translation Software! Free Download Now!
Babylon 8 - Your all-in-one solution
Award winning translation software trusted by millions. Translate from any language to any language.
View Demo



Wikipedia English The Free EncyclopediaDownload this dictionary
Partial evaluation
In computing, partial evaluation is a technique for program optimization by specialization.A computer program is seen as a mapping prog of input data into output data:, the static data, is the part of the input data known at compile time.
See more at Wikipedia.org...

This article uses material from Wikipedia® and is licensed under the GNU Free Documentation License

FOLDOC DictionaryDownload this dictionary
partial evaluation
<compileralgorithm> (Or "specialisation") An optimisation technique where the compiler evaluates some subexpressions at compile-time. For example,
pow x 0 = 1 pow x n = if even n then pxn2 * pxn2 else x * pow x (n-1) where pxn2 = pow x (n/2) f x = pow x 5
Since n is known we can specialise pow in its second argument and unfold the recursive calls:
pow5 x = x * x4 where x4 = x2 * x2 x2 = x * x f x = pow5 x
pow5 is known as the residual. We could now also unfold pow5 giving:
f x = x * x4 where x4 = x2 * x2 x2 = x * x
It is important that the partial evaluation algorithm should terminate. This is not guaranteed in the presence of recursive function definitions. For example, if partial evaluation were applied to the right hand side of the second clause for pow above, it would never terminate because the value of n is not known.
Partial evaluation might change the termination properties of the program if, for example, the expression (x * 0) was reduced to 0 it would terminate even if x (and thus x * 0) did not.
It may be necessary to reorder an expression to partially evaluate it, e.g.
f x y = (x + y) + 1 g z = f 3 z
If we rewrite f:
f x y = (x + 1) + y
then the expression x+1 becomes a constant for the function g and we can say
g z = f 3 z = (3 + 1) + z = 4 + z
Partial evaluation of built-in functions applied to constant arguments is known as constant folding.
See also full laziness.
(1999-05-25)


(c) Copyright 1993 by Denis Howe

Define partial evaluation

Translate partial evaluation