Template Haskell
Inhaltsverzeichnis
1
Einführung
1.1
Voraussetzungen
1.2
Motivation
1.3
Abgrenzung
1.4
Aufbau der Arbeit
2
Grundlagen
2.1
Klassifikation von Metasprachen
2.2
Statisches und dynamisches Scoping
2.3
GHC-Phasen und Template Haskell
3
Template Haskell
3.1
Programmcode als Abstrakte Datentypen
3.1.1
Problem des Typchecks
3.1.2
Problem des Scopings
3.2
Die Q-Monade
3.2.1
Von den ADTs zum Objektprogramm
3.2.2
Syntax-Konstruktionsfunktionen
3.2.3
Reifikation
3.2.3.1
Auslesen interner Datenstrukturen
3.2.3.2
Verarbeitung interner Datenstrukturen
3.2.3.3
Instance deriving
3.3
Quasi-Quotes in Template Haskell
3.3.1
Typüberprüfung in Templates
3.3.1.1
Mehrstufige Kompilierung
3.3.1.2
Regeln beim Typcheck
3.3.1.3
Compilezeit-orientiertes Staging
3.3.2
Statisches Scoping von Quasi-Quotes
3.3.3
Cross-Stage Persistenz
3.3.3.1
Cross-Stage Persistenz für Top-Level-Bindings
3.3.3.2
Cross-Stage Persistenz für lokale Bindings
3.3.3.3
Dynamisches Binding
4
Anwendungsbeispiele
4.1
Bedingte Kompilierung
4.2
Unrolling von Algorithmen
4.3
Erweiterte Abstraktionsmechanismen
5
Abschlussbetrachtung
6
Literaturverzeichnis
(C) Philipp Pribbernow