1. Partielle Auswertung : Grundprinzip

Partielle Auswertung ist eine Form der Programmspezialisierung. Das Ziel ist, aus einem allgemeinen Programm ein effizienteres automatisch zu erzeugen. Bei einem Programm mit mehreren Eingaben, wird ein Teil dieser Eingaben auf einen festen Wert 'eingefroren' und ein spezialisiertes Programm erzeugt, das auf dem Rest der Eingabe läuft. Die Programme werden hierbei wie Funktionen behandelt. Partielle Auswertung hat den Vorteil komplett automatisiert werden zu können.
'normale Programmausführung'
ohne pA

' Programmausführung mit partieller Auswertung'
mit pA

Dem partiellen Auswerter 'mix' wird das Programm p mit einem Teil seiner Eingabe in1 übergeben (es kann sich natürlich um eine mehrdimensionale Eingabe handeln) und daraus ein Programm pin1 erzeugt, dem die restliche Eingabe übergeben wird. In beiden Bildern sollte natürlich die Ausgabe dieselbe sein.

Beispiel :
Ein 2- Eingabe
Programm
p = f(n,x)= if n=0 then 1
else if even(n) then f(n/2,x)^2
else x*f(n-1,x)
Programm p, spezialisiert auf die statische Eingabe n=5
p5 = f5(x) = x*((x^2)^2)


p5 wird durch Vorausberechnung aller Ausdrücke, die von n abhängen, erzeugt.
Optimierung ist hier möglich, da die Programmkontrolle durch n gesteuert wird. Würde man versuchen x zu fixieren, würde man kaum (wenn überhaupt) optimierten Code erhalten.