demangle even more
[msc-thesis1617.git] / methods.dsl.tex
index be8bf74..f21cb88 100644 (file)
@@ -110,6 +110,9 @@ must be updated accordingly to prevent possible runtime errors. When an
 extension is added in a new class, this problem does not arise and views can
 choose to implement only parts of the collection of classes.
 
+In contrast to deep embedding, it is very well possible to have multiple views
+applied on the same expression. This is also shown in the following listing.
+
 \begin{lstlisting}[label={lst:exclassshallow},%
        caption={A minimal class based shallow \gls{EDSL}}]
 :: Env   = ...            // Some environment
@@ -133,4 +136,15 @@ instance intArith PrettyPrinter where
        lit x = toString x
        add x y = x +++ "+" +++ y
        ...
+
+...
+
+Start :: (PP String, Bool)
+Start = (print e0, eval e0)
+where
+       e0 :: a Bool | intArith, boolArith a
+       e0 = eq (lit 42) (lit 21 +. lit 21)
+
+       print (PP p) = p
+       eval (Evaluator e) env = e env
 \end{lstlisting}