08.10.2013 Aufrufe

Download (1405Kb)

Download (1405Kb)

Download (1405Kb)

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

7.3. SEQUENTIALITÄT 157<br />

Auf den ersten Blick scheint es, als könnte dieses Problem durch das Verbieten überlappender linker<br />

Programmregelseiten beseitigt werden. Berrys Beispiel zeigt jedoch, daß dem keinesfalls so ist:<br />

Beispiel 7.4 Berrys Beispiel (S. 280 in [Ber&Cur82], S. 188 in [Fie&Har88], [Lav87])<br />

Weder<br />

noch<br />

noch<br />

f(x,A,B) → C<br />

f(B,x,A) → D<br />

f(A,B,x) → E<br />

f1(x,y,z) → cond A/B(x,. . .)<br />

f2(x,y,z) → cond A/B(y,. . .)<br />

f3(x,y,z) → cond A/B(z,. . .)<br />

stellen Ansätze für eine semantikerhaltende Übersetzung dar, da<br />

f DP 1 ,cbn<br />

1 (⊥,A,B) = ⊥ , aber f DP,cbn(⊥,A,B) = C<br />

f DP 2 ,cbn<br />

2 (B, ⊥,A) = ⊥ , aber f DP,cbn(B, ⊥,A) = D<br />

f DP 3 ,cbn<br />

3 (A,B, ⊥) = ⊥ , aber f DP,cbn(A,B, ⊥) = E<br />

ist. ✷<br />

Wir haben in beiden Beispielen die cbn-Semantik verwendet. Tatsächlich existiert das dargestellte<br />

Problem in der cbv-Semantik nicht. Dort werden bekanntlich — wie auch aus der li-<br />

Reduktionssemantik direkt ersichtlich — vor dem ” Funktionsaufruf“ die Funktionsargumente<br />

vollständig ausgewertet. Somit können die Konstruktortests in einer beliebigen Reihenfolge erfolgen.<br />

Für die cbv-Semantik lassen sich Programme mit Pattern also offensichtlich semantikerhaltend<br />

in Programme mit Hilfsfunktionen übersetzen.<br />

Für alle anderen erzwungenen Striktheiten ς sind jedoch leicht zu den obigen Beispielprogrammen<br />

analoge Programme konstruierbar.<br />

Die bisherige Argumentation für die Unmöglichkeit einer Übersetzung ist zwar intuitiv einleuchtend,<br />

aber stellt noch keinen formalen Beweis dar. Diesen führen wir im folgenden Abschnitt.<br />

7.3 Sequentialität<br />

In Programmen mit Hilfsfunktionen können die Argumente einer Funktion nur nacheinander auf<br />

ihre Konstruktorsymbolkomponenten getestet werden. Dies führt dazu, daß alle durch Programme<br />

mit Hilfsfunktionen spezifizierten Operationen in einem gewissen Sinne sequentiell sind.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!