+\begin{lstHaskell}[label={lst:extaglesssubt},caption={Adding subtraction to the shallow \gls{EDSL}.}]
+class Sub v where
+ sub :: v Int -> v Int -> v Int
+
+instance Sub Print where
+ sub x y = P ("(" ++ runPrint x ++ "-" ++ runPrint y ++ ")"
+\end{lstHaskell}
+
+Adding an interpretation means adding a data type and providing instances for the language constructs.
+
+\begin{lstHaskell}[label={lst:extagless},caption={An evaluator interpretation of the minimal tagless-final \gls{EDSL}.}]
+data Eval a = Eval {runEval :: Env -> a}
+
+instance DSL v where
+ lit a = Eval (\_->a)
+ var i = Eval (\e->retrEnv e i)
+ plus x y = Eval (\e->runEval x e + runEval y e)
+ eq x y = Eval (\e->runEval x e == runEval y e)
+
+instance Sub Eval where
+ sub x y = Eval (\e->runEval x e - runEval y e)
+\end{lstHaskell}
+
+\section{Comparison}\label{sec:compare_embedding}
+Both flavours have their strengths and weaknesses and both flavours can be improved in order to mitigate (some of the) downsides.
+
+\begin{table}[ht]
+ \begin{threeparttable}[b]
+ \caption{Comparison of embedding techniques, adapted from \citet[Sec.~3.6]{sun_compositional_2022}}%
+ \label{tbl:dsl_comparison}
+ \begin{tabular}{lllllll}
+ \toprule
+ & Shallow & Deep & Hybrid & Poly & Comp. & Classy\\
+ \midrule
+ Transcoding free & yes & yes & no & yes & yes & yes\\
+ Linguistic reuse & yes & no & partly\tnote{1} & yes & yes & no?\\
+ Extend constructs & yes & no & partly\tnote{1} & yes & yes & yes\\
+ Extend interpretations & no & yes & yes & yes & yes & yes\\
+ Transformations & no & yes & yes & maybe\tnote{2} & maybe\tnote{2} & yes\\
+ Modular dependencies & no & maybe & maybe & yes & yes & yes\\
+ Nested pattern matching & no & yes & yes & no & maybe & maybe\tnote{3}\\
+ Type safe & yes & maybe & no & yes & yes & yes\\
+ \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.
+ \end{tablenotes}
+ \end{threeparttable}
+\end{table}