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.

Um derartige Semantiken zu finden, betrachten wir in Kapitel 4 die zwei in funktionalen Programmiersprachen<br />

allgemein verwendeten Semantiken: die call-by-value und die call-by-name Semantik.<br />

Wir definieren jeweils sowohl eine operationelle Semantik, die auf der Reduktion der Termersetzungssysteme<br />

beruht, als auch eine denotationelle Semantik. Bei letzterern handelt es sich um auf<br />

ω-vollständigen Halbordnungen und dem Fixpunktsatz von Tarski beruhende Fixpunktsemantiken.<br />

Für die call-by-value Semantik erweist sich auch die Übereinstimmung der operationellen und der<br />

denotationellen Semantik als relativ einfach beweisbar.<br />

Diese Betrachtungen führen uns in Kapitel 5 zu dem Konzept der erzwungenen Striktheit und<br />

den allgemeineren ς-Semantiken. Die call-by-value und die call-by-name Semantik sind nur zwei,<br />

allerdings ausgezeichnete Vertreter dieser ς-Semantiken. Wir definieren für jede ς-Semantik eine (denotationelle)<br />

Fixpunktsemantik und zwei (operationelle) Reduktionssemantiken, wobei die eine Reduktionssemantik<br />

mehr von theoretischem Interesse ist, während die zweite implementationsnäher<br />

ist. Anschließend beweisen wir die Übereinstimmung aller drei Semantiken.<br />

In Kapitel 6 stellen wir Beziehungen zu anderen Semantikarten her. Im Kalkül der Termersetzungssysteme<br />

und der algebraischen Spezifkationen ist das initiale Modell (Quotientenmodell) als<br />

semantische Grundlage sehr beliebt. Wir begründen, warum dieses initiale Modell für die Semantik<br />

unserer funktionalen Programmiersprachen ungeeignet ist. Wir zeigen jedoch auch einen Zusammenhang<br />

zwischen dem initialen Modell und den ς-Semantiken auf. Deklarative Semantiken<br />

beruhen auf dem Erfüllbarkeits- und Modellbegriff der Logik. Wir stellen fest, daß von unseren<br />

ς-Semantiken allein die call-by-name Semantik deklarativ definierbar ist. Durch die Verwendung<br />

partieller Algebren läßt sich aber auch die call-by-value Semantik deklarativ formulieren.<br />

Wir haben zwei Programmarten definiert, eine, die Patternmatching verwendet, und eine, die<br />

zusätzliche Hilfsfunktionen einführt. Es stellt sich somit die Frage, ob diese beiden gleich mächtig<br />

sind und sich Programme der einen Art in Programme der anderen Art semantikerhaltend effektiv<br />

übersetzen lassen. In Kapitel 7 stellen wir fest, daß Patternmatching echt mächtiger als die<br />

Hilfsfunktionen ist. Die das Scheidekriterium darstellende Eigenschaft der Sequentialität gibt uns<br />

weitere Einblicke in die Semantik der Programmiersprachen und auch Anregungen für effizientere<br />

Reduktionssemantiken.<br />

Mit den ς-Semantiken sind nur sogenannte freie Datentypen direkt darstellbar. In Kapitel 8<br />

beschäftigen wir uns mit Semantiken für nicht-freie Datentypen und zeigen einige dabei auftretende<br />

Probleme auf. Daraufhin stellen wir eine Programmiermethode vor, die eine adäquate Darstellung<br />

nicht-freier Datentypen auch bei Verwendung der ς-Semantiken gestattet.<br />

Schließlich fassen wir in Kapitel 9 die erzielten Erkenntnisse kurz zusammen. Außerdem weisen wir<br />

noch auf interessante weiterführende Fragestellungen und Ideen hin.<br />

An dieser Stelle möchte ich all jenen danken, die mich durch Vorschläge, Kommentare, Hinweise<br />

auf Literatur und auch Ratschläge für das Schreiben mit L ATEX unterstützt haben. Insbesondere<br />

danke ich diesbezüglich meinem Betreuer Thomas Noll.<br />

7

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!