repositories
/
msc-thesis1617.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
demangle even more
[msc-thesis1617.git]
/
methods.dsl.tex
diff --git
a/methods.dsl.tex
b/methods.dsl.tex
index
be8bf74
..
f21cb88
100644
(file)
--- a/
methods.dsl.tex
+++ b/
methods.dsl.tex
@@
-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.
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
\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
...
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}
\end{lstlisting}