These small and cheap computers do not have powerful hardware but are energy efficient and support many sensors and actuators.
While the term \gls{IOT} has already been known for almost thirty years, only recently, the exponential growth of the number of \gls{IOT} edge devices is really ramping up.
Programming \gls{IOT} systems is very complex because each layer of the system is built with different computers, hardware architectures, programming languages, programming paradigms, and abstraction levels.
-This generates a lot of semantic friction.
+This generates a lot of semantic friction.\todo[inline]{benoem ook de andere problemen. Geen over all type check om correcte samenwerking te garanderen.}
Furthermore, \gls{IOT} systems become convoluted because they are dynamic, multi-tiered, multi-user, multitasking, interactive, distributed, and collaborative in nature.
\Gls{TOP} proves a suitable programming paradigm that allows the declarative specification of exactly such systems.
However, edge devices are often too computationally restricted to be able to run a full-fledged \gls{TOP} system such as \gls{ITASK}.
The dissertation is structured as a purely functional rhapsody in three episodes.
In order to get \gls{TOP} to resource-constrained edge devices we use special tools: \glspl{DSL}.
-The dissertation shows several techniques for creating \glspl{EDSL}.
-Then it shows a tool, \gls{MTASK}, a \gls{TOP} system for \gls{IOT} edge devices.
-Finally, it compares how this approach compares to existing approaches for programming \gls{IOT} systems.
+The dissertation shows several techniques for creating \glspl{EDSL} in \cref{prt:dsl}.
+Then it shows a tool, \gls{MTASK}, a \gls{TOP} system for \gls{IOT} edge devices in \cref{prt:top}.
+Finally, in \cref{prt:tvt} it compares how this approach compares to existing approaches for programming \gls{IOT} systems.
-\subsection{Tool craft}
+\subsection{\nameref{prt:dsl}}
\Cref{prt:dsl} presents some tool crafting techniques that are useful for creating \gls{TOP} languages for \gls{IOT} edge devices.
It presents two novel techniques for embedding \glspl{DSL} in \gls{FP} languages.
I show how to automatically generate the required boilerplate for shallowly embedded \glspl{DSL} in order to make data types from the host language first-class citizens in the \gls{DSL}.
The scaffolding is generated using template metaprogramming and quasiquotation is used to alleviate the programmer from the syntax burden and support pattern matching.
-\subsection{Tools}
+\todo[inline]{Paar zinnen over het nut van deze tool crafts: het maakt het voor DSL-developpers in het algemeen makkelijker om uitbreidbare DSLs te maken.}
+
+\subsection{\nameref{prt:top}}
General-purpose \gls{TOP} systems cannot run on edge devices due to their significant hardware requirements.
However, with the right techniques, \glspl{DSL} can be created that can be executed on edge devices while maintaining the high abstraction level.
By embedding domain-specific knowledge into the language and execution platform, and leaving out general-purpose functionality, \gls{TOP} languages can be made suitable for edge devices.
Using only three simple functions, devices are connected to \gls{ITASK} servers, \gls{MTASK} tasks are integrated in \gls{ITASK}, and \gls{ITASK} \glspl{SDS} accessed from within \gls{MTASK} tasks.
Its design, integration with \gls{ITASK}, implementation, and green computing facilities are shown.
-\subsection{Comparison}
+\todo[inline]{Paar zinnen over het nut}
+
+\subsection{\nameref{prt:tvt}}
Using tierless programming, many issues that arise with tiered programming are mitigated.
This has already been observed in web applications.
The \gls{MTASK} system show that it is possible to program edge devices of a \gls{IOT} systems using \gls{TOP}.