Praxis der Funktionalen Programmierung (20. 10.)
Vorwort
Die Themen, die wir behandeln, gehören grob zu zwei Kategorien:
- exakt zu erfassende Grundlagen (Definitionen)
- zunächst nur intuitiv (durch Benutzung anhand von Beispielen)
zu erfassende Sachverhalte
Natürlich wandert das meiste im Laufe der Zeit von der zweiten
in die erste Abteilung. Es wäre jedoch sehr umständlich,
nur mit dem bereits exakt Definierten zu programmieren.
Da würde es bis Weihnachten dauern,
bis wir überhaupt auch nur ein Bild malen könnten.
Andererseits entspricht dieses Vorgehen auch dem tatsächlichen Programmieren:
man benutzt Bibliotheksfunktionen,
ohne sich um deren Implementierung zu kümmern.
Einordnung
Wir sind im Abschnitt 1, einfache Programme, mit Grafik.
Wir wollen an dessen Ende einige Parkettierungs-Aufgaben lösen können.
Währendher lernen wir die grundsätzliche Struktur
von Haskell-Programmen und -Datentypen kennen.
Definitionen
Die Syntax von Haskell-Programmen
- Module
- bestehen aus einer Folge von Typdeklarationen
und Gleichungen (Definitionen)
- Typdeklaration
- hat die Form "Bezeichner :: Typ".
- Definitionen
- haben die Form "linke Seite = rechte Seite"
- linke Seite
- besteht aus einem Namen, eventuell gefolgt von Mustern
- Muster
- testet Übereinstimmung von Konstruktoren und/oder bindet lokale Bezeichner,
ist entweder ein Bezeichner oder ein Konstruktor,
eventuell gefolgt von Mustern
- rechte Seite
- ist ein Ausdruck
- Ausdrücke
- ein Name (auch Konstruktor), eventuell mit Argumenten (Ausdrücken)
- Konstanten für Zahlen, Zeichen, Zeichenketten
- lokale Bindungen: let lhs1 = rhs1; lhs2 = rhs2; ... in exp
- bedingte Ausdrücke: if exp then exp else exp
http://www.informatik.uni-leipzig.de/~joe/
mailto:joe@informatik.uni-leipzig.de