Monaden in Aktion#
Im letzten Artikel über Monaden haben wir die Grundlagen
diskutiert. Hier soll es darum gehen, eigene Monaden zur Lösung
Software-technischer Aufgaben selbst zu entwickeln. Wir werden sehen,
wie ein Stück Software modular und durch lokale Erweiterungen um neue
Funktionalität ergänzt werden kann, ohne bestehende Teile zu verändern
oder zu refaktorisieren. Unter modular verstehen wir dabei die
Eigenschaft, bestimmte Funktionalität in einem klar abgegrenzten
Bereich implementieren und mit anderen Erweiterungen kombinieren
zu können.
Als laufendes Beispiel werden wir die klassische Aufgabe der
Auswertung von Ausdrücken behandeln. Wir werden mit einfachen
arithmetischen Ausdrücken und Konstanten beginnen. Hierfür werden wir
einen rein funktional geschriebenen Interpretierer
angeben. Dieser wird in einem ersten Schritt in eine monadische Form
transformiert, ohne dass die Funktionalität verändert wird.
Anschließend werden wir Erweiterungen vornehmen, die in einem
herkömmlichen Interpretierer nur schwer und mit hohem Aufwand möglich
sind. Wir werden eine sinnvolle Fehlerbehandlung hinzufügen,
nichtdeterministische Berechnungen ermöglichen, Variablen in den
Ausdrücken zulassen und zum Schluss die Sprache um Zuweisungen,
Schleifen und Ein- und Ausgabe erweitern.
In diesem Teil über Monaden in Aktion werden wir nur die ersten
Schritte entwickeln. Die Erweiterungen um Variablen, Zuweisungen und
E/A werden in einem weiteren Teil diskutiert werden.
Weiterlesen...