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.

Kapitel 9<br />

Zusammenfassung und Ausblick<br />

Wir haben uns in dieser Arbeit mit der Definition und Untersuchung von Semantiken für konstruktorbasierte<br />

funktionale Programme erster Ordnung unter besonderer Berücksichtigung des<br />

Patternmatchings befaßt.<br />

Am Anfang haben wir die abstrakte Syntax zweier Arten von konstruktorbasierten funktionalen<br />

Programmen erster Ordnung definiert: der Programme mit Pattern und der Programme mit Hilfsfunktionen.<br />

Für diese haben wir als Verallgemeinerung der üblichen call-by-value und call-by-name<br />

Semantiken die Menge der ς-Semantiken definiert, die bezüglich der erzwungenen Striktheit ς parametrisiert<br />

sind. Jede ς-Semantik ist durch eine denotationelle und zwei operationelle Semantiken<br />

angegeben worden. Schon die Komplexität des Beweises der Übereinstimmung dieser drei Semantiken<br />

unterstreicht ihre Verschiedenartigkeit.<br />

Bei der Definition der denotationellen ς-Semantik stand die Forderung der Kompositionalität im<br />

Vordergrund. Ein allein durch die Konstruktorsymbole bestimmter ς-Basisdatentyp wird durch<br />

das Programm um Operationen zum ς-Datentyp des Programms, der Semantik des Programms,<br />

erweitert. Dies kann durchaus schrittweise erfolgen, da die Erweiterung eines Programms um<br />

neue Funktionssymbole mit zugehörigen Programmregeln die schon bestehenden Operationen unverändert<br />

läßt. Die denotationelle ς-Semantik ist eine Fixpunktsemantik, die auf einer Menge von<br />

ς-Interpretationen, die in engem Zusammenhang mit dem Basisdatentypen stehen, und auf einer<br />

sich aus dem Programm ergebenden ς-Transformation basiert.<br />

Die beiden operationellen ς-Semantiken beruhen auf der Idee der in der denotationellen ς-Semantik<br />

korrekten ς-Reduktion. Diese ς-Reduktion ist durch die Menge der ς-Redexe charakterisiert. Die Semantik<br />

eines Grundterms wird durch die semantischen Approximationen der vermittels ς-Reduktion<br />

erreichbaren Grundterme bestimmt. Diese Grundtermsemantik muß invariant sein, um überhaupt<br />

die Definition einer semantischen Gleichheit und die Existenz eines zugehörigen Datentyps zu gestatten.<br />

Während die allgemeine ς-Reduktionssemantik noch auf allen möglichen ς-Reduktionen<br />

beruht, verwendet die po-ς-Reduktionssemantik eine Reduktionsstrategie. Aufgrund deren Determinismus<br />

ist sie als Basis einer Implementierung unserer Programmiersprachen geeignet.<br />

Wir haben auch noch einen Blick auf deklarative Semantiken geworfen und dabei festgestellt, daß<br />

einzig und allein die cbn-Semantik deklarativ definierbar ist. Durch die Verwendung partieller<br />

anstelle von totalen Algebren ist jedoch auch noch die cbv-Semantik (für Programme mit Pattern)<br />

deklarativ definierbar.<br />

Die ς-Semantiken haben uns zu einem besseren Verständnis der Semantiken konstruktorbasierter<br />

funktionaler Programmiersprachen geführt. Insbesondere ermöglichen sie die einheitliche Behandlung<br />

der zwei Standardsemantiken call-by-value und call-by-name. In der Praxis können sie dem<br />

Nachweis der Korrektheit optimierender Interpreter und Compiler mit cbn-Semantik dienen, die

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!