process comments
[phd-thesis.git] / top / lang.tex
index d16b887..7b901c8 100644 (file)
@@ -29,13 +29,14 @@ Furthermore, this particular type of embedding has the property that it is exten
 Adding a language construct is as simple as adding a type class.
 Adding an interpretation is done by creating a new data type and providing implementations for the various type classes.
 
-In order to reduce the hardware requirements for devices running \gls{MTASK} programs, several measures have been taken.
+In order to reduce the hardware requirements for devices running \gls{MTASK} programs, several measures have been taken.\todo{by whom? would be good here to be more explicit to make it clear at this point whether that's part of the contribution}
 Programs in \gls{MTASK} are written in the \gls{MTASK} \gls{DSL}, separating them from the host \gls{ITASK} program.
 This allows the tasks to be constructed at compile time in order to tailor-make them for the specific work requirements.
 Furthermore, the \gls{MTASK} language is restricted: there are no recursive data structures, no higher-order functions, strict evaluation, and functions and objects can only be declared at the top level.
 
 \section{Class-based shallow embedding}
 Let us illustrate this technique by taking the very simple language of literal values.
+\todo{show how this relates to the general embedding discussion previously}
 This language interface can be described using a single type constructor class with a single function \cleaninline{lit}.
 This function is for lifting values, when it has a \cleaninline{toString} instance, from the host language to our new \gls{DSL}.
 The type variable \cleaninline{v} of the type class represents the view on the language, the interpretation.
@@ -691,9 +692,8 @@ It uses expressions based a simply-typed $\lambda$-calculus with support for som
 \section{Conclusion}
 This chapter gave an overview of the complete \gls{MTASK} \gls{DSL}.
 The \gls{MTASK} language is a rich \gls{TOP} language tailored for \gls{IOT} edge devices.
-The language is implemented as a class-based shallowly \gls{EDSL} in the pure functional host language \gls{CLEAN}.
-The language is an enriched lambda calculus as a host language.
-It provides language constructs for arithmetic expressions, conditionals, functions, but also non-interactive basic tasks, task combinators, peripheral support, and integration with \gls{ITASK}.
+The language is implemented as a class-based shallowly embedded \gls{DSL} in the pure functional host language \gls{CLEAN}.
+The language uses an enriched lambda calculus as a host language, providing additional language constructs for arithmetic expressions, conditionals, functions, but also non-interactive basic tasks, task combinators, peripheral support, and integration with \gls{ITASK}.
 Terms in the language are just interfaces and can be interpreted by one or more interpretations.
 When using the byte code compiler, terms in the \gls{MTASK} language are type checked at compile time but are constructed and compiled at run time.
 This facilitates tailor-making tasks for the current work requirements.