Einführung in Standard ML
Einführung in Standard ML
H.Leiß
Programmierkurs | |
Zeit: | Mi. 10-12
|
Ort: | Raum 0.13
|
Dozent: | H.Leiß
|
Voraussetzung: | Grundkenntnisse über endliche Automaten und
kontextfreie Grammatiken.
|
Inhalt und Ziele der Veranstaltung
Die funktionale Programmiersprache Standard ML ist eine getypte Sprache,
die einige Unterstützung bei der Programmierung bietet:
- Typsystem:
- Automatische Herleitung von Typen bei der Übersetzung
- Deklaration von freien Datentypen
- Abstrakte Datentypen
- Funktionen:
- Höherstufige Funktionen
- Funktionsdefinition durch Fallunterscheidung nach Mustern des Arguments
- Imperative Konstrukte:
- referenzierbare Objekte (Zeiger)
- Schleifenkonstrukte
- Modulsystem:
- Verpackung von Typen, Objekten und Funktionen in ,,Strukturen''
- Zusammensetzung von Strukturen zu größeren Moduln durch ,,Funktoren''
- Spezifikation und Überprüfung von Schnittstellen zwischen Moduln
- Neuübersetzung nach Programmänderungen:
- Automatische Abhängigkeitsanalyse zwischen Moduln
- Automatische Neuübersetzung nur der notwendigen Module
Der Kurs wird diese Sprachkonstrukte und Programmierwerkzeuge neben
Beispielen aus dem Buch von Paulson hauptsächlich an folgenden Beispielen
erläutern:
- Übersetzungen zwischen regulären Ausdrücken und endlichen Automaten
- Berechnung von Eigenschaften und Transformationen kontextfreier
Grammatiken
- Berechnung von Suffixbaum oder Teilwortgraph eines Texts
Der Kurs dient auch dazu, einige im Proseminar ,,Endliche
Automaten und Formale Sprachen'' behandelte Verfahren unter Anleitung zu
implementieren und dadurch besser verstehen zu lernen.
Literatur
L.C.Paulson: ML for the Working Programmer. 2nd edition.
Cambridge University Press 1996
Erfolgsbescheinigung
bei brauchbarer Lösung der Programmieraufgaben.
Vorlesungsfolien
- Typen bool, unit, 'a list und Funktionsdefinitionen
- Syntax der Kernsprache
- Syntax der Typsprache
- Syntax der Modulsprache, Abstrakte Datentypen
- Funktoren: Beispiel Lexikographische Ordnung
- Funktoren: Beispiel Matrizenring über einem Halbring (Quellcode)
Übungsaufgaben
- Aufgabenblatt
1 (Listenfunktionen)
- Aufgabenblatt
2 (Aussagenlogische Formeln)
- Aufgabenblatt
3 (Syntaxbäume und Durchsuchen von Bäumen)
- Aufgabenblatt
4 (Ein Modul für Suchbäume (Tries))
- Aufgabenblatt
5 (Ein Funktor zum kartesischen Produkt von Halbringen)
- Aufgabenblatt
6 (Abhängige Signaturen und ein anderer Matrixfunktor)
Lösungen zu ausgewählten Aufgaben
- Lösungen zu Aufgabenblatt 2
- Lösungen
zu Aufgabenblatt 3 (Erweitert um eine Lösung zu Aufg. 3.2)
- Lösungen
zu Aufgabenblatt 4
Aufruf und Bedienung von SML
Wird noch ergänzt. Vorläufig siehe die Bemerkungen dazu zum SML-Kurs WS
2000/01
- sml-mode-3.1.tgz,
angepaßt ans CIS
File translated from TEX by TTH, version 2.54.
On 18 Jun 2003, 19:07.