Praxis der Funktionalen Programmierung (27. 10.)
Wiederholung Listen
Wir betrachten nochmal das Programm für Append (++)
und beweisen eine Eigenschaft durch Induktion.
Das gleiche für das Umdrehen von Listen (reverse).
Natürlich wünschen wir uns, daß diese Beweise
- automatisch geprüft
- automatisch gefunden
werden.
Wieweit geht das? Es ist Equational Reasoning,
siehe Vorlesung Term-Ersetzung (Dr. Hartwig).
Eine typische Aktion auf Listen ist das Sortieren.
Wir können Quicksort
sehr direkt hinschreiben. Es hat aber die bekannten Nachteile,
falls wir ungünstige Pivot-Elemente benutzen,
und die Laufzeit leidet zusätzlich durch die naive Implementierung.
Sicherer ist Mergesort.
Wir schreiben zuerst die top-down, dann die bottom-up-Variante,
und verbessern diese schließlich (Hausaufgabe).
http://www.informatik.uni-leipzig.de/~joe/
mailto:joe@informatik.uni-leipzig.de