Download (1405Kb)
Download (1405Kb)
Download (1405Kb)
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