Download (1405Kb)
Download (1405Kb)
Download (1405Kb)
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
5.5. ÜBEREINSTIMMUNG DER DREI ς-SEMANTIKEN 131<br />
5.5.4 Effizientere ς-Reduktionssemantiken<br />
Bei der Definition der Normalformsemantik und später der allgemeinen ς-Reduktionssemantik<br />
haben wir darauf hingewiesen, daß diese aufgrund ihres Nicht-Determinismus bei der Reduktion<br />
kaum die Grundlage einer Implementierung bilden können. Diese Unzulänglichkeit wurde<br />
mit den daraufhin definierten, auf deterministischen Reduktionsstrategien beruhenden Reduktionssemantiken,<br />
hauptsächlich der po-ς-Reduktionssemantik beseitigt. Wir haben die Effizienz<br />
der po-ς-Reduktionssemantik jedoch nicht weiter betrachtet, da das Auffinden von effizienten ς-<br />
Reduktionsstrategien nicht Ziel dieser Arbeit ist. Aus dem letzten Abschnitt ergeben sich diesbezüglich<br />
jedoch einige Anregungen, die wir kurz diskutieren wollen.<br />
Für die Untersuchung der Effizienz benötigen wir ein Kostenmaß. Wir verwenden dafür die Anzahl<br />
der Redexstellen, an denen reduziert wird bis die Normalform erreicht ist. Für ein gründliches<br />
Studium der Effizienz wäre sicherlich auch die Betrachtung unendlicher Reduktionsfolgen, welche<br />
partielle oder unendliche Konstruktorterme approximieren, sinnvoll.<br />
Im vorangegangenen Abschnitt 5.5.3 haben wir zwar am Ende nur noch die po-ς-Reduktionsstrategie<br />
betrachtet, aber im Prinzip die Eignung jeder beliebigen eventually outermost ς-<br />
Reduktionsstrategie für eine ς-Reduktionssemantik nachgewiesen. Die po- ist im allgemeinen keinesfalls<br />
die effizienteste aller eventually outermost ς-Reduktionsstrategien.<br />
Es ist bekannt, daß bei reinen outermost (ς-)Reduktionsstrategien häufig Redexe vervielfacht werden,<br />
die im weiteren Verlauf der Reduktion alle wieder reduziert werden. Dieses Problem wird in<br />
Implementierungen jedoch durch die Speicherung von Termen in azyklischen Graphen und die dadurch<br />
mögliche Verwendung gemeinsamer Teilterme gelöst. Man spricht hier auch von call-by-need<br />
anstelle von call-by-name Auswertung (siehe Kapitel VI in [O’Do77] oder [Fie&Har88]).<br />
Außerdem dürfen wir nicht vergessen, daß outermost ς-Redexstellen nicht nur durch Reduktion<br />
an ihnen selbst eliminiert werden können, sondern auch dadurch, daß oberhalb von ihnen neue<br />
ς-Redexstellen entstehen.<br />
Das folgende Beispiel verdeutlicht dies.<br />
Beispiel 5.9<br />
and(a,b)<br />
and(x,False) → False<br />
a → b<br />
b → False<br />
2<br />
−−→<br />
o,cbn and(a,False)<br />
ε<br />
−−→<br />
o,cbn False.<br />
Bei po-cbn-Reduktion wäre im ersten Reduktionschritt zusätzlich und völlig unnötig an der outermost<br />
Redexstelle 1 reduziert worden. ✷<br />
Somit kann es durchaus sinnvoll sein, in einem Reduktionsschritt nur an einer echten Teilmenge<br />
der outermost ς-Redexstellen zu reduzieren.<br />
Eine Verallgemeinerung dieses Beispiels zeigt auch, daß nicht jede die Semantik approximierende<br />
ς-Reduktionsfolge eventually outermost sein muß: