slovo | definícia |
partial evaluation (foldoc) | partial evaluation
(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)
|
| |
Nenašli ste slovo čo ste hľadali ? Doplňte ho do slovníka.
na vytvorenie tejto webstránky bol pužitý dictd server s dátami z sk-spell.sk.cx a z iných voľne dostupných dictd databáz. Ak máte klienta na dictd protokol (napríklad kdict), použite zdroj slovnik.iz.sk a port 2628.
online slovník, sk-spell - slovníkové dáta, IZ Bratislava, Malé Karpaty - turistika, Michal Páleník, správy, údaje o okresoch V4