From: Mart Lubbers <mart@martlubbers.net>
Date: Fri, 4 Nov 2022 15:31:10 +0000 (+0100)
Subject: updates
X-Git-Url: https://git.martlubbers.net/?a=commitdiff_plain;h=11bda54fc5a192544e945b73c5455b1ab3275078;p=phd-thesis.git

updates
---

diff --git a/dsl/class_deep_embedding.tex b/dsl/class_deep_embedding.tex
index 8800a0f..589c2f9 100644
--- a/dsl/class_deep_embedding.tex
+++ b/dsl/class_deep_embedding.tex
@@ -683,45 +683,63 @@ For example, \citet{svenningsson_combining_2013} show that by expressing the dee
 This paper differs from those approaches in the sense that it does not require a core language in which all extensions need to be expressible.
 
 \subsection{Comparison}
+\todo[inline]{text moet beter}
 There is no silver bullet to embedding \glspl{DSL}.
-\Citet{sun_compositional_2022} provided a thorough comparison of embedding techniques including more axes than just the two state in the expression problem.
+\Citet{sun_compositional_2022} provided a thorough comparison of embedding techniques including more axes than just the two statet in the expression problem.
 
-\Cref{tbl:dsl_comparison} shows an extended version of their comparison table.
-Shallow includes regular shallow embedding.
-Deep includes regular deep embedding and deep embedding with \glspl{GADT}.
-Hybrid includes the many variants of hybrid embeddings.
-Poly includes polymorphic embeddings, tagless-final embedding, and object algebras, as providing a unified encoding that allows extension both in language constructs and views.
-Finally, classy denotes classy deep embedding.
+\Cref{tbl:dsl_comparison} shows a variant of their comparison table.
+The first two rows describe the two axes of the original expression problem and the third row describes theadded axis of modular dependency handling as stated by \citeauthor{sun_compositional_2022}.
+The \emph{poly.} style of embedding---including tagless-final---falls short of this requirement.
+
+Intensional analysis is an umbrella term for pattern matching and transformations.
+In shallow embedding, intensional analysis is more complex and requires stateful views describing context but it is possible to implement though.
+
+Simple type system describes the whether it is possible to encode this embedding technique with many type system extensions.
+In classy deep embedding, there is either a bit more scaffolding and boilerplate required or advanced type system extensions need to be used.
+
+Little boilerplate denotes the amount of scaffolding and boilerplate required.
+For example, hybrid embedding requires a transcoding step between the deep syntax and the shallow core language.
 
 \begin{table}[ht]
 	\begin{threeparttable}[b]
 		\small
-		\caption{Comparison of embedding techniques, adapted from \citet[\citesection{3.6}]{sun_compositional_2022}}%
-		\label{tbl:dsl_comparison}
+		\caption{Comparison of embedding techniques, extended from \citet[\citesection{3.6}]{sun_compositional_2022}.}%
+		\label{tbl:dsl_comparison_brief}
 		\begin{tabular}{llllllll}
 			\toprule
-									& Shallow   & Deep          & Hybrid                 & Poly                 & Comp.                & \`a la & Classy\\
+								 & Shallow                & Deep                   & Hybrid
+								 & Poly.                  & Comp.                  & \`a la
+								 & Classy\\
 			\midrule
-			Extend constructs       & \CIRCLE{} & \Circle{}     & \LEFTcircle{}\tnote{1} & \CIRCLE{}            & \CIRCLE{}            & \Circle{}     & \CIRCLE{}\\
-			Extend interpretations  & \Circle{} & \CIRCLE{}     & \CIRCLE{}              & \CIRCLE{}            & \CIRCLE{}            & \CIRCLE{}     & \CIRCLE{}\\
-			Transcoding free        & \CIRCLE{} & \CIRCLE{}     & \Circle{}              & \CIRCLE{}            & \CIRCLE{}            & \CIRCLE{}     & \CIRCLE{}\\
-			Linguistic reuse        & \CIRCLE{} & \Circle{}     & \LEFTcircle{}\tnote{1} & \CIRCLE{}            & \CIRCLE{}            & \Circle{}     & \Circle{}\\
-			Transformations         & \Circle{} & \CIRCLE{}     & \CIRCLE{}              & \LEFTcircle\tnote{2} & \LEFTcircle\tnote{2} & \CIRCLE{}     & \CIRCLE{}\\
-			Modular dependencies    & \Circle{} & \LEFTcircle{} & \LEFTcircle{}          & \CIRCLE{}            & \CIRCLE{}            & \LEFTcircle{} & \CIRCLE{}\\
-			Nested pattern matching & \Circle{} & \CIRCLE{}     & \CIRCLE{}              & \Circle{}            & \LEFTcircle{}        & \CIRCLE{}     & \LEFTcircle{}\tnote{3}\\
-			Type safe               & \CIRCLE{} & \LEFTcircle{} & \Circle{}              & \CIRCLE{}            & \CIRCLE{}            & \LEFTcircle{} & \CIRCLE{}\\
+			Extend constructs    & \CIRCLE{}              & \Circle{}              & \LEFTcircle{}\tnote{1}
+								 & \CIRCLE{}              & \CIRCLE{}              & \CIRCLE{}
+								 & \CIRCLE{}\\
+			Extend views         & \Circle{}              & \CIRCLE{}              & \CIRCLE{}
+								 & \CIRCLE{}              & \CIRCLE{}              & \CIRCLE{}
+								 & \CIRCLE{}\\
+			Modular dependencies & \Circle{}              & \CIRCLE{}              & \CIRCLE{}
+								 & \Circle{}              & \CIRCLE{}              & \CIRCLE{}
+								 & \CIRCLE{}\\
+			Intensional analysis & \LEFTcircle{}\tnote{2} & \CIRCLE{}              & \CIRCLE{}
+								 & \LEFTcircle{}\tnote{2} & \LEFTcircle{}\tnote{2} & \CIRCLE{}
+								 & \LEFTcircle{}\tnote{3}\\
+			Simple type system   & \CIRCLE{}              & \CIRCLE{}              & \Circle{}
+								 & \CIRCLE{}              & \CIRCLE{}              & \Circle{}
+								 & \LEFTcircle{}\tnote{4}\\
+			Little boilerplate   & \CIRCLE{}              & \CIRCLE{}              & \Circle{}
+								 & \CIRCLE{}              & \CIRCLE{}              & \Circle{}
+								 & \LEFTcircle{}\tnote{4}\\
 			\bottomrule
 		\end{tabular}
 		\begin{tablenotes}
-			\item [1] Only in the shallowly embedded part.
-			\item [2] Transformations require some ingenuity and are sometimes awkward to write.
-			\item [3] It requires some---safe---form of dynamic typing.
+			\item [1] Only if the extension is expressible in the core language.
+			\item [2] Requires ingenuity and are sometimes awkward to write.
+			\item [3] Cross-extensional pattern matching requires \emph{safe} dynamic typing.
+			\item [4] Either a simple type system or little boilerplate.
 		\end{tablenotes}
 	\end{threeparttable}
 \end{table}
 
-
-
 \section*{Acknowledgements}
 This research is partly funded by the Royal Netherlands Navy.
 Furthermore, I would like to thank Pieter and Rinus for the fruitful discussions, Ralf for inspiring me to write a functional pearl, and the anonymous reviewers for their valuable and honest comments.