From 3eab0c3b71c5c374db5c6e69cbbbd737bfd9be9a Mon Sep 17 00:00:00 2001 From: Mart Lubbers Date: Mon, 26 Jun 2017 12:17:31 +0200 Subject: [PATCH] roy's comments: chapter 3 --- methods.dsl.tex | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/methods.dsl.tex b/methods.dsl.tex index f21cb88..b7103ef 100644 --- a/methods.dsl.tex +++ b/methods.dsl.tex @@ -1,7 +1,7 @@ An \gls{EDSL} is a language embedded in a host language. \glspl{EDSL} can have one or more backends or views. Commonly used views are pretty printing, compiling, simulating, verifying and proving the program. There are several -techniques available for creating \glspl{EDSL}. Each of them have their own +techniques available for creating \glspl{EDSL}. They all have their own advantages and disadvantages in terms of extendability, typedness and view support. In the following subsections each of the main techniques are briefly explained. @@ -9,7 +9,7 @@ explained. \section{Deep embedding} A deep \gls{EDSL} is a language represented as an \gls{ADT}. Views are functions that transform something to the datatype or the other way around. As -an example we have the simple arithmetic \gls{EDSL} shown in +an example, take the simple arithmetic \gls{EDSL} shown in Listing~\ref{lst:exdeep}. \begin{lstlisting}[label={lst:exdeep},% @@ -24,7 +24,7 @@ Listing~\ref{lst:exdeep}. | Eq DSL \end{lstlisting} -Deep embedding has the advantage that it is very simple to build and the views +Deep embedding has the advantage that it is easy to build and views are easy to add. To the downside, the expressions created with this language are not type-safe. In the given language it is possible to create an expression such as \CI{Plus (LitI 4) (LitB True)} that adds a boolean to an integer. @@ -53,9 +53,9 @@ no compile time guarantee is given that all views support it. \end{lstlisting} \section{Shallow embedding} -In a shallowly \gls{EDSL} all language constructs are expressed as functions in -the host language. An evaluator view for our example language then looks -something like the code shown in Listing~\ref{lst:exshallow}. Note that much of +In a shallow \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 Listing~\ref{lst:exshallow}. Note that much of the internals of the language can be hidden using monads. \begin{lstlisting}[label={lst:exshallow},% @@ -97,7 +97,7 @@ advantages of both shallow and deep embedding. In class-based shallow embedding the language constructs are defined as type classes. This language is shown with the new method in Listing~\ref{lst:exclassshallow}. -This type of embedding inherits the easiness of adding views from shallow +This type of embedding inherits the ease of adding views from shallow embedding. A view is just a different data type implementing one or more of the type classes as shown in the aforementioned Listing where an evaluator and a pretty printer are implemented. -- 2.20.1