HOME | ENGLISH | IMPRESSUM | KIT

Bachelorarbeit (abgeschlossen): Visualisierung von Lazy Evaluation und Sharing

Die Haskell-Bibliothek vacuum kann Haskell-Datenstrukturen währen der Laufzeit als Graph darstellen, in dem unter anderem ersichtlich wird, welche Werte mehrfach referenziert werden, sogenanntes Sharing. Sharing ist ein wichtiges, aber nicht immer einfach zu verstehendes Werkzeug um performante funktionale Programme zu schreiben.

Neue Versionen des Haskell-Interpreters GHCi bieten mit dem :print-Statement ähnliche Funktionalität, mit der man gut teilweise ausgewertete Ausdrücke untersuchen kann, aber nicht jede Art von Sharing anzeigt.

Ziel der Bacherlorabeit ist es, ein graphisches Werkzeug zu erstellen, dass die Vorteile beider mechanismen kombiniert und ansprechend aufbereitet, so dass das Programm z.B. in der Lehre eingesetzt werden kann.

Aufgabe:

Sie erstellen ein Haskell-Programm mit graphischer Schnittstelle, etwa mittels GTK, xWidgets oder dynamischem HTML. Dieses Programm enthält entweder ein Eingabefeld für GHCi-Kommandos oder lässt sich aus einer laufenden GHCi-Sitzung starten. Darüber befindet sich eine Fläche, auf der Werte angezeigt werden. Die angezeigten Werte sollen idealerweise mit einem Befehl von der GHCi-Kommandozeile ausgewählt werden.

Die Anzeige soll teilweise ausgewertete Ausdrücke als solche darstellen und mehrfach auftauchende Werte, unabhängig ob sie schon ausgewertet sind oder nicht, kennzeichnen, etwa durch farbliche Markierung, Verbindungslinien o.ä. Wird eine Datenstruktur aufgrund eines Befehls am GHCi-Prompt weiter ausgewertet, soll die Anzeige dies wiederspiegeln. Unausgewertete Teile einer Datenstruktur in der Anzeige soll der Anwender direkt, etwa durch einen Mausklick, auswerten können.

Das erstelle Programm soll als Cabal-Paket paketiert und unter einer freien Lizenz auf Hackage veröffentlicht werden.

Voraussetzungen

Ein Grundverständnis von funktionaler Programmierung, wie es in der Vorlesung „Programmierparadigmen“ vermittelt wird oder duch interessiertes Selbstudium angeeignet wurde, ist zwingend nötig. Erfahrungen mit der GUI-Programmierung mit GTK oder HTML, egal in welcher Programmiersprache, ist hilfreich.



Veröffentlichungen

Veröffentlichung
The ghc-vis package
The xdot package
Visualization of Lazy Evaluation and Sharing

Betreuer

Ehemalige Mitarbeiter
Dr. rer. nat. Joachim Breitner

Studenten

Ehemalige Tutoren
Dennis Felsing