directory structure
[phd-thesis.git] / dsl / dsl_techniques.tex
similarity index 97%
rename from domain-specific_languages/dsl_techniques.tex
rename to dsl/dsl_techniques.tex
index 7ca965f..7791c82 100644 (file)
@@ -5,7 +5,8 @@
        \pagenumbering{arabic}
 }{}
 
-\mychapter{chp:dsl_embedding_techniques}{DSL embedding techniques}%
+\chapter{DSL embedding techniques}%
+\label{chp:dsl_embedding_techniques}%
 An \gls{EDSL} is a language embedded in a host language created for a specific domain\todo{citation needed?}.
 \glspl{EDSL} can have one or more backends or views.
 Commonly used views are pretty printing, compiling, simulating, verifying and proving the program.
@@ -100,7 +101,7 @@ If a language construct is added, no compile time guarantee can be given that al
        | E.e: Eq    (Expr e)    (Expr e)    -> Expr Bool & == e
 \end{lstClean}
 
-\subsection{Shallow embedding}
+\section{Shallow embedding}
 In a shallowly \gls{EDSL} all language constructs are expressed as functions in the host language.
 An evaluator view for the example language then can be implemented as the code shown in Definition~\ref{lst:exshallow}.
 Note that much of the internals of the language can be hidden using monads.
@@ -131,13 +132,10 @@ It is nearly impossible to add views to a shallowly embedded language.
 The only way of achieving this is by reimplementing all functions so that they run all backends at the same time.
 This will mean that every component will have to implement all views rendering it slow for multiple views and complex to implement.
 
-\subsection{Generalised algebraic data types}
-
-\section{Shallow embedding}
-
 \subsection{Tagless-final embedding}\label{ssec:tagless}
 
 \section{Comparison}
+\todo{cite compositional DSLs}
 
 \input{subfilepostamble}
 \end{document}