08.10.2013 Aufrufe

Download (1405Kb)

Download (1405Kb)

Download (1405Kb)

MEHR ANZEIGEN
WENIGER ANZEIGEN

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ß:

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!