restructure
authorMart Lubbers <mart@martlubbers.net>
Tue, 18 Oct 2022 07:35:56 +0000 (09:35 +0200)
committerMart Lubbers <mart@martlubbers.net>
Tue, 18 Oct 2022 07:35:56 +0000 (09:35 +0200)
29 files changed:
appx/bytecode.tex
appx/clean_for_haskell_programmers.tex
appx/mtask_aux.tex
back/acknowledgements.tex
back/curriculum_vitae.tex
back/research_data_management.tex
back/samenvatting.tex
back/summary.tex
concl/conclusion.tex
dsl/class_deep_embedding.tex
dsl/dsl_techniques.tex
dsl/first-class_datatypes.tex
front/dedication.tex
front/motto.tex
front/titlepage.tex
glossaries.tex
intro/intro.tex [moved from intro/introduction.tex with 91% similarity]
other.bib
preamble.tex
subfilepreamble.tex
thesis.tex
top/beyond_microprocessors.tex [deleted file]
top/integration.tex [deleted file]
top/interpreting.tex [deleted file]
top/mtask_by_example.tex [deleted file]
top/top.tex [moved from top/mtask.tex with 99% similarity]
tvt/img/arch.pdf [new file with mode: 0644]
tvt/img/bar_chart.pdf [new file with mode: 0644]
tvt/tvt.tex

index b6e13f8..0eeab6e 100644 (file)
@@ -1,10 +1,8 @@
 \documentclass[../thesis.tex]{subfiles}
 
-\begin{document}
-\ifSubfilesClassLoaded{
-       \pagenumbering{arabic}
-}{}
+\include{subfilepreamble}
 
+\begin{document}
 \chapter{Bytecode instruction set}%
 \label{chp:bytecode_instruction_set}%
 \todo[inline]{formatting}
index adddcbf..ff24c0e 100644 (file)
@@ -1,12 +1,8 @@
 \documentclass[../thesis.tex]{subfiles}
 
-\begin{document}
-
-\ifSubfilesClassLoaded{
-       \pagenumbering{arabic}
-}{
-}
+\include{subfilepreamble}
 
+\begin{document}
 \chapter{\texorpdfstring{\glsentrytext{CLEAN}}{Clean} for \texorpdfstring{\glsentrytext{HASKELL}}{Haskell} Programmers}%
 \label{chp:clean_for_haskell_programmers}
 
@@ -21,7 +17,7 @@ While \gls{CLEAN} and \gls{HASKELL} were both conceived around 1987 and have sim
 This section describes some of the history of \gls{CLEAN} and provides a crash course in \gls{CLEAN} pecularities written for \gls{HASKELL} programmers.
 It is based on the 
 
-\Gls{CLEAN}---acronym for Clean \acrlong{LEAN}~\citep{barendregt_towards_1987}---, was originally designed as a \gls{GRS} core language but quickly served as an intermediate language for other functional languages~\citep{brus_clean_1987}.
+\Gls{CLEAN}---acronym for Clean \glsxtrlong{LEAN}~\citep{barendregt_towards_1987}---, was originally designed as a \gls{GRS} core language but quickly served as an intermediate language for other functional languages~\citep{brus_clean_1987}.
 In the early days it has also been called \emph{Concurrent} \gls{CLEAN}~\citep{nocker_concurrent_1991} but these days the language has no support for this anymore.
 Fast forward thirty years, \gls{CLEAN} is now a robust language with state-of-the-art features and is actually used in industry as well as academia---albeit in select areas of the world~\citep{plasmeijer_clean_2021}.
 
index 455360a..ffeb74e 100644 (file)
@@ -1,10 +1,8 @@
 \documentclass[../thesis.tex]{subfiles}
 
-\begin{document}
-\ifSubfilesClassLoaded{
-       \pagenumbering{arabic}
-}{}
+\include{subfilepreamble}
 
+\begin{document}
 \chapter{Auxiliary \texorpdfstring{\glsentrytext{MTASK}}{mTask} type classes}%
 \label{chp:mtask_aux}
 \lstset{basicstyle=\tt\footnotesize}
index 71761d0..b0eed01 100644 (file)
@@ -1,9 +1,8 @@
 \documentclass[../thesis.tex]{subfiles}
 
+\include{subfilepreamble}
+
 \begin{document}
-\ifSubfilesClassLoaded{
-       \pagenumbering{arabic}
-}{}
 \chapter{Acknowledgements}%
 \label{chp:acknowledgements}
 %\begin{center}
@@ -12,7 +11,7 @@ Funding: Teun de Groot, Ton van Heusden
 
 Supervisors: Pieter Koopman, Rinus Plasmeijer, Jan-Martin Jansen
 
-Co-authors: Jeremy Singer, Phil Trinder, Adrian Ramsingh, Sustrainable group
+Co-authors: Jeremy Singer, Phil Trinder, Adrian Ramsingh, SusTrainable group
 
 %Colleagues: Jurriën Stutterheim, Laszlo Domoslai, Arjan Oortgiese, Bas Lijnse, Steffen Michels, Markus Klinik, Tim Steenvoorden, Camil Staps, Hans-Nikolai Vie\ss{}mann, John van Groningen, Sven-Bodo Scholz, Sjaak Smetsers, Fok Bolderheij, Simone Meeuwsen, Peter Achten, Ingrid Berenbroek
 %
@@ -22,7 +21,7 @@ Co-authors: Jeremy Singer, Phil Trinder, Adrian Ramsingh, Sustrainable group
 %
 %Mentors: Jos Baack, Francisco Torreira, Franc Grootjen, the late Louis Vuurpijl, Ralf Hinze
 %
-%Friends: Pieter Wolfert (and Annerieke Wessels); Chris Kamphuis and Maudy Bijen; Koen Dercksen and Michelle Everard; George Gregoire; Larry Caruthers; Tim Hirschler; Emma Lindahl; Truman Crandell;
+%Friends: Pieter Wolfert (and Annerieke Wessels (and Anouk Neerincx)); Chris Kamphuis and Maudy Bijen; Koen Dercksen and Michelle Everard; George Gregoire; Larry Caruthers; Tim Hirschler; Emma Lindahl (nee Dahl); Truman Crandell;
 %\selectlanguage{russian}
 %Александер Барков;
 %\selectlanguage{british}
@@ -31,12 +30,6 @@ Co-authors: Jeremy Singer, Phil Trinder, Adrian Ramsingh, Sustrainable group
 %
 %Marie-José van Diem, Ellie Kimenai
 
-The research carried out in this thesis was partly funded by the Royal Netherlands Navy.
-
-Additionally, this thesis acknowledges the support of the Erasmus+ Key Action 2 (Strategic partnership for higher education) project No. 2020--1--PT01--KA203--078646: ``SusTrainable --- Promoting Sustainability as a Fundamental Driver in Software Development Training and Education''.
-The information and views set out in this thesis are those of the author and do not necessarily reflect the official opinion of the European Union.
-Neither the European Union institutions and bodies nor any person acting on their behalf may be held responsible for the use which may be made of the information contained therein.
-
 Finally I want to thank all anonymous reviewers for the indispensable comments, suggestions and remarks on all papers.
 %\end{center}
 \input{subfilepostamble}
index 30524cd..0e81df1 100644 (file)
@@ -1,9 +1,8 @@
 \documentclass[../thesis.tex]{subfiles}
 
+\include{subfilepreamble}
+
 \begin{document}
-\ifSubfilesClassLoaded{
-       \pagenumbering{arabic}
-}{}
 \chapter{Curriculum Vit\ae}%
 \label{chp:curriculum_vitae}
 Mart Lubbers
@@ -21,14 +20,7 @@ Mart Lubbers
        2017         & Researcher at the Netherlands Defense Academy, Den Helder in the faculty of Military Sciences (fMIL).\\
        2018         & Researcher at the Radboud University, Nijmegen in the Institute for Computing and Information Sciences (iCIS).\\
        2018{--}2023 & PhD Candidate at the Radboud University, Nijmegen in the Institute for Computing and Information Sciences (iCIS).
-%                   & Educational programmes participated in during PhD track:\\
-%                   & Education in a Nutshell\\
-%                   & Effective Writing Strategies\\
-%                   & Kinderen Enthousiasmeren voor de Wetenschap\\
-%                   & University Teaching Qualification\\
 \end{tabular}
 
-\todo[inline]{include educational programmes participated in during the PhD track?}
-
 \input{subfilepostamble}
 \end{document}
index 0c826b0..e4f54ad 100644 (file)
@@ -1,10 +1,8 @@
 \documentclass[../thesis.tex]{subfiles}
 
-\begin{document}
-\ifSubfilesClassLoaded{
-       \pagenumbering{arabic}
-}{}
+\include{subfilepreamble}
 
+\begin{document}
 \chapter{Research Data Management}%
 \label{chp:research_data_management}
 
index 0c1ee31..22c3c9d 100644 (file)
@@ -1,10 +1,8 @@
 \documentclass[../thesis.tex]{subfiles}
 
-\begin{document}
-\ifSubfilesClassLoaded{
-       \pagenumbering{arabic}
-}{}
+\include{subfilepreamble}
 
+\begin{document}
 \chapter{Samenvatting}%
 \label{chp:samenvatting}
 \selectlanguage{dutch}
index 7e4f260..38db72d 100644 (file)
@@ -1,10 +1,8 @@
 \documentclass[../thesis.tex]{subfiles}
 
-\begin{document}
-\ifSubfilesClassLoaded{
-       \pagenumbering{arabic}
-}{}
+\include{subfilepreamble}
 
+\begin{document}
 \chapter{Summary}%
 \label{chp:summary}
 \begin{center}
index 868c30b..79e18f2 100644 (file)
@@ -1,10 +1,8 @@
 \documentclass[../thesis.tex]{subfiles}
 
-\begin{document}
-\ifSubfilesClassLoaded{
-       \pagenumbering{arabic}
-}{}
+\include{subfilepreamble}
 
+\begin{document}
 \chapter{Coda}%
 \label{chp:conclusion}
 \todo{Or finale}
index 0542633..6734754 100644 (file)
@@ -1,10 +1,8 @@
 \documentclass[../thesis.tex]{subfiles}
 
-\begin{document}
-\ifSubfilesClassLoaded{
-       \pagenumbering{arabic}
-}{}
+\include{subfilepreamble}
 
+\begin{document}
 \chapter{Deep embedding with class}%
 \label{chp:classy_deep_embedding}
 
@@ -548,7 +546,7 @@ e3 :: (Typeable d, GDict (d (Neg_4 d)), GDict (d (Sub_4 d))) => Expr_4 d
 e3 = neg_4 (Lit_4 42 `sub_4` Lit_4 38) `Add_4` Lit_4 1
 \end{lstHaskellLhstex}
 
-\section{\texorpdfstring{\Acrlongpl{GADT}}{Generalised algebraic data types}}%
+\section{\texorpdfstring{\Glsxtrlongpl{GADT}}{Generalised algebraic data types}}%
 \Glspl{GADT} are enriched data types that allow the type instantiation of the constructor to be explicitly defined~\citep{cheney_first-class_2003,hinze_fun_2003}.
 Leveraging \glspl{GADT}, deeply embedded \glspl{DSL} can be made statically type safe even when different value types are supported.
 Even when \glspl{GADT} are not supported natively in the language, they can be simulated using embedding-projection pairs or equivalence types~\citep[\citesection{2.2}]{cheney_lightweight_2002}.
index 0164cb2..22b9977 100644 (file)
@@ -1,11 +1,9 @@
 \documentclass[../thesis.tex]{subfiles}
 
-\begin{document}
-\ifSubfilesClassLoaded{
-       \pagenumbering{arabic}
-}{}
+\include{subfilepreamble}
 
-\chapter{\texorpdfstring{\Acrshort{DSL}}{DSL} embedding techniques}%
+\begin{document}
+\chapter{\texorpdfstring{\Glsxtrshort{DSL}}{DSL} embedding techniques}%
 \label{chp:dsl_embedding_techniques}%
 An \gls{EDSL} is a language embedded in a host language created for a specific domain\todo{citation needed?}.
 Properties such as referential transparency, minimal syntax, powerful type systems and rich data types make \gls{FP} languages excellent candidates for hosting \glspl{EDSL}.
@@ -90,7 +88,7 @@ eval (Eq l r) = case (eval l, eval r) of
        (l, r)       -> error ("Can't compare " ++ show l ++ " to " ++ show r)
 \end{lstHaskell}
 
-\subsection{\texorpdfstring{\Acrlongpl{GADT}}{Generalised algebraic data types}}
+\subsection{\texorpdfstring{\Glsxtrlongpl{GADT}}{Generalised algebraic data types}}
 Deep embedding has the advantage that it is easy to build and views are easy to add.
 On the downside, the expressions created with this language are not necessarily type-safe.
 In the given language it is possible to create an expression such as \haskellinline{LitI 4 `Plus` LitB True} that adds a boolean to an integer.
@@ -189,7 +187,7 @@ instance Sub Print where
 
 Adding an interpretation means adding a data type and providing instances for the language constructs.
 
-\begin{lstHaskell}[label={lst:extagless},caption={An evaluator interpretation of the minimal tagless-final \gls{EDSL}.}]
+\begin{lstHaskell}[label={lst:extaglesseval},caption={An evaluator interpretation of the minimal tagless-final \gls{EDSL}.}]
 data Eval a = Eval {runEval :: Env -> a}
 
 instance DSL v where
index 5585363..c2a8098 100644 (file)
@@ -1,11 +1,9 @@
 \documentclass[../thesis.tex]{subfiles}
 
-\begin{document}
-\ifSubfilesClassLoaded{
-       \pagenumbering{arabic}
-}{}
+\include{subfilepreamble}
 
-\chapter{First-class data types in shallow \acrlongpl{EDSL} using metaprogramming}%
+\begin{document}
+\chapter{First-class data types in shallow \glsxtrlongpl{EDSL} using metaprogramming}%
 \label{chp:first-class_datatypes}%
 \begin{chapterabstract}
        \Gls{FP} languages are excellent candidates for hosting \glspl{EDSL} because of their rich type systems, minimal syntax, and referential transparency.
@@ -343,7 +341,7 @@ This information can then be used to generate code according to the structure of
 Reification is done using the \haskellinline{reify :: Name -> Q Info} function.
 The \haskellinline{Info} type is an \gls{ADT} containing all the---known to the compiler---information about the matching type: constructors, instances, \etc.
 
-\section{Metaprogramming for generating \texorpdfstring{\acrshort{DSL}}{DSL} functions}
+\section{Metaprogramming for generating \texorpdfstring{\glsxtrshort{DSL}}{DSL} functions}
 With the power of metaprogramming, we can generate the boilerplate code for our user-defined data types automatically at compile time.
 To generate the code required for the \gls{DSL}, we define the \haskellinline{genDSL} function.
 The type belonging to the name passed as an argument to this function is made available for the \gls{DSL} by generating the \haskellinline{typeDSL} class and view instances.
index 0e92967..6aa934d 100644 (file)
@@ -1,9 +1,8 @@
 \documentclass[../thesis.tex]{subfiles}
 
+\include{subfilepreamble}
+
 \begin{document}
-\ifSubfilesClassLoaded{
-       \pagenumbering{roman}
-}{}
 
 \topskip0pt
 \vspace*{\fill}
index bf9dcb6..db3a959 100644 (file)
@@ -1,9 +1,8 @@
 \documentclass[../thesis.tex]{subfiles}
 
+\include{subfilepreamble}
+
 \begin{document}
-\ifSubfilesClassLoaded{
-       \pagenumbering{roman}
-}{}
 
 \topskip0pt
 \vspace*{\fill}
@@ -46,6 +45,6 @@
 }{%
        H.M. (Dick) Bruna
 }
-
 \vspace*{\fill}%
+
 \end{document}
index 91dac40..2ca46ea 100644 (file)
@@ -1,22 +1,20 @@
 \documentclass[../thesis.tex]{subfiles}
 
-\begin{document}
-\ifSubfilesClassLoaded{
-       \pagenumbering{roman}
-}{}
+\include{subfilepreamble}
 
+\begin{document}
 %\hypersetup{pageanchor=false}
 \begin{titlepage}
        \begin{center}
            \vspace*{3.5cm}
 
 %              \LARGE{\textsc{\bfseries\mytitle}}
-               \huge{\bfseries\mytitle}
+               \LARGE{\bfseries\mytitle}
 
            \vspace*{15pt}
 
 %              \large{\textsc{\mysubtitle}}
-               \Large{\mysubtitle}
+               \large{\mysubtitle}
 
            \vspace*{5pt}
 
@@ -31,7 +29,7 @@
 
            ter verkrijging van de graad van doctor\\
            aan de Radboud Universiteit Nijmegen\\
-           op gezag van de rector magnificus prof.~dr.~J.H.J.M.\ van\ Krieken,\\
+           op gezag van de rector magnificus prof.\ dr.\ J.H.J.M.\ van\ Krieken,\\
            volgens besluit van het college van decanen\\
            in het openbaar te verdedigen
 
 
 \thispagestyle{empty}
 
-\begin{itemize}[leftmargin=*]
-       \item[] Promotor:
-               \begin{itemize}
-                       \item[] prof.\ dr.\ dr.h.c.\ ir.\ M.J.\ (Rinus)\ Plasmeijer
+\begin{itemize}[wide,label={},leftmargin=*,itemsep=\baselineskip]
+       \item Promotor:
+               \begin{itemize}[label={}]
+                       \item prof.em.\ dr.\ dr.h.c.\ ir.\ M.J.\ (Rinus)\ Plasmeijer\todo{em.\ erbij of niet?}
                \end{itemize}
-\end{itemize}
-
-\begin{itemize}[leftmargin=*]
-       \item[] Copromotoren:
-               \begin{itemize}
-                       \item[] dr.\ P.W.M.\ (Pieter) Koopman
-                       \item[] dr.\ J.M.\ (Jan Martin) Jansen
+       \item Copromotoren:
+               \begin{itemize}[label={}]
+                       \item dr.\ P.W.M.\ (Pieter) Koopman
+                       \item dr.\ J.M.\ (Jan Martin) Jansen
                \end{itemize}
-\end{itemize}
-
-\begin{itemize}[leftmargin=*]
-       \item[] Manuscriptcommissie:
-               \begin{itemize}
-                       \item[] \makebox[4.2cm]{Person A\hfill} (Affiliation)
-                       \item[] \makebox[4.2cm]{Person B\hfill} (Affiliation)
-                       \item[] \makebox[4.2cm]{Person C\hfill} (Affiliation)
+       \item Manuscriptcommissie:
+               \begin{itemize}[label={}]
+                       \item prof.\ dr.\ S.B.\ (Sven-Bodo) Scholz
+                       \item prof.\ dr.\ C.U.\ (Clemens) Grelck (Friedrich-Schiller-Universit\"at Jena)
+                       \item prof.\ dr.\ G.K.\ (Gabrielle) Keller (Universiteit Utrecht)
+                       \item prof.\ dr.\ M.\ (Mary) Sheeran (Chalmers University of Gothenburg)\todo{Chalmers Tekniska H\"ogskola?}
+                       \item prof.\ dr.\ R.T.W.\ (Ralf) Hinze (Technische Universit\"at Kaiserslautern)
                \end{itemize}
 \end{itemize}
 
 \vfill
 
-\noindent%
-%\begin{minipage}[b][][b]{0.8\textwidth} % adapt widths of minipages to your needs
-\begin{minipage}[b][][b]{0.95\textwidth} % adapt widths of minipages to your needs
-       {
-               \setlength{\parindent}{0cm}%
-               This research was partly funded by the Royal Netherlands Navy.
-       }
-       
-       \vspace{0.25cm}
-       
-       {
-               \setlength{\parindent}{0cm}%
-               Printed by Drukkerij\\[\baselineskip]
-               Typeset using \LaTeX\\[\baselineskip]
-               ISBN:\ 111{-}11{-}11111{-}11{-}1\\[\baselineskip]
-               Copyright \copyright{} Mart Lubbers, 2023\\[\baselineskip]
-               \href{https://martlubbers.net}{martlubbers.net}\\[\baselineskip]
-               This work is licensed under the Creative Commons Attribution-NoDerivatives 4.0 International License.
-               To view a copy of this license, visit \url{http://creativecommons.org/licenses/by-nd/4.0/} or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.\\[\baselineskip]
-               \includegraphics[scale=.5]{cc}
-               \includegraphics[scale=.5]{by}
+\begin{itemize}[wide,label={},leftmargin=*,itemsep=\baselineskip]
+       \item This research was partly funded by the Royal Netherlands Navy.
+       \item Printed by Drukkerij
+       \item Typeset using \LaTeXe{}
+       \item ISBN:\ 111{-}11{-}11111{-}11{-}1
+       \item Copyright \copyright{} Mart Lubbers, 2023
+       \item \href{https://martlubbers.net}{martlubbers.net}
+       \item This work is licensed under the Creative Commons Attribution-NoDerivatives 4.0 International License.
+               To view a copy of this license, visit \url{http://creativecommons.org/licenses/by-nd/4.0/} or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, {USA}.
+       \item
+               \includegraphics[scale=.5]{cc}%
+               \includegraphics[scale=.5]{by}%
                \includegraphics[scale=.5]{nd}
-       }
-\end{minipage}%
+\end{itemize}
 %\hypersetup{pageanchor=true}
 \end{document}
index 0eb6e6d..7d610e0 100644 (file)
@@ -7,9 +7,9 @@
 \myacronym{ADC}{ADC}{analog-to-digital converter}
 \myacronym{ADT}{ADT}{algebraic data type}
 \myacronym{API}{API}{application programming interface}
-\myacronym{ARDSL}{ARDSL}{\gls{ARDUINO} \acrshort{DSL}}
+\myacronym{ARDSL}{ARDSL}{\gls{ARDUINO} \glsxtrshort{DSL}}
 \myacronym{BLE}{BLE}{Bluetooth low energy}
-\myacronym{CEFP}{CEFP}{central European summer school of \acrlong{FP}}
+\myacronym{CEFP}{CEFP}{central European summer school of \glsxtrlong{FP}}
 \myacronym{CRS}{CRS}{\gls{CLEAN} Raspberry Pi system}
 \myacronym{CRTS}{CRTS}{\gls{CLEAN} Raspberry Pi temperature sensor}
 \myacronym{CWS}{CWS}{\gls{CLEAN} \gls{WEMOS} system}
 \myacronym{DHT}{DHT}{digital humidity and temperature}
 \myacronym{DSL}{DSL}{domain-specific language}
 \myacronym{ECO2}{eCO\textsubscript{2}}{equivalent carbon dioxide}
-\myacronym{EDSL}{eDSL}{embedded \acrlong{DSL}}
+\myacronym{EDSL}{eDSL}{embedded \glsxtrlong{DSL}}
 \myacronym{FP}{FP}{functional programming}
 \myacronym{FRP}{FRP}{functional reactive programming}
-\myacronym{GADT}{GADT}{generalised \acrshort{ADT}}
+\myacronym{GADT}{GADT}{generalised \glsxtrshort{ADT}}
 \myacronym{GHC}{GHC}{Glasgow \gls{HASKELL} Compiler}
-\myacronym{GPIO}{GPIO}{general-purpose \acrlong{IO}}
+\myacronym{GPIO}{GPIO}{general-purpose \glsxtrlong{IO}}
 \myacronym{GPL}{GPL}{general-purpose language}
 \myacronym{GRS}{GRS}{graph rewriting system}
-\myacronym{GUI}{GUI}{graphical \acrlong{UI}}
+\myacronym{GUI}{GUI}{graphical \glsxtrlong{UI}}
 \myacronym{HOAS}{HOAS}{high-order abstract syntax}
 \myacronym{IOT}{IoT}{internet of things}
 \myacronym{IDE}{IDE}{integrated development environment}
@@ -34,7 +34,7 @@
 \myacronym{LEAN}{LEAN}{language of East-Anglia and Nijmegen}
 \myacronym{LED}{LED}{light-emitting diode}
 \myacronym{MCU}{MCU}{microcontroller unit}
-\myacronym{OLED}{OLED}{organic \acrlong{LED}}
+\myacronym{OLED}{OLED}{organic \glsxtrlong{LED}}
 \myacronym{OS}{OS}{operating system}
 \myacronym{OTA}{OTA}{over-the-air}
 \myacronym{PIR}{PIR}{passive infrared}
 \myacronym{PWS}{PWS}{\gls{MICROPYTHON} \gls{WEMOS} system}
 \myacronym{PRTS}{PRTS}{\gls{PYTHON} Raspberry Pi temperature sensor}
 \myacronym{PWTS}{PWTS}{\gls{MICROPYTHON} \gls{WEMOS} temperature sensor}
-\myacronym{QDSL}{QDSL}{quoted \acrshort{DSL}}
+\myacronym{QDSL}{QDSL}{quoted \glsxtrshort{DSL}}
 \myacronym{RAM}{RAM}{random-access memory}
 \myacronym{RFID}{RFID}{radio-frequency identification}
-\myacronym{RTOS}{RTOS}{real-time \acrshort{OS}}
+\myacronym{RTOS}{RTOS}{real-time \glsxtrshort{OS}}
 \myacronym{RTS}{RTS}{run-time system}
 \myacronym{SDS}{SDS}{shared data source}
 \myacronym{SN}{SN}{sensor network}
@@ -55,7 +55,7 @@
 \myacronym{TOP}{TOP}{task-oriented programming}
 \myacronym{TOSD}{TOSD}{task-oriented software development}
 \myacronym{TRS}{TRS}{term rewriting system}
-\myacronym{TTH}{TTH}{typed \acrlong{TH}}
+\myacronym{TTH}{TTH}{typed \glsxtrlong{TH}}
 \myacronym{TVOC}{TVOC}{total volatile organic compounds}
 \myacronym{UI}{UI}{user interface}
 \myacronym{UOD}{UoD}{universe of discourse}
 % Glossaries
 \newglossaryentry{MTASK}{%
        name=mTask,
-       description={is a \acrshort{TOP} \acrshort{EDSL} for microcontrollers integrated with the \gls{ITASK} system},
+       description={is a \glsxtrshort{TOP} \glsxtrshort{EDSL} for microcontrollers integrated with the \gls{ITASK} system},
 }
 \newglossaryentry{ITASK}{%
        name=iTask,
-       description={is a \acrshort{TOP} \acrshort{EDSL} for creating distributed multi-user collaborative web applications},
+       description={is a \glsxtrshort{TOP} \glsxtrshort{EDSL} for creating distributed multi-user collaborative web applications},
 }
 \newglossaryentry{TOPHAT}{%
        name=TopHat,
-       description={is a \acrshort{TOP} language designed to formally capture the essence of \gls{TOP}}
+       description={is a \glsxtrshort{TOP} language designed to formally capture the essence of \gls{TOP}}
 }
 \newglossaryentry{CLEAN}{%
        name=Clean,
-       description={Clean \acrlong{LEAN}, a pure lazy \acrlong{FP} language based on graph rewriting}
+       description={Clean \glsxtrlong{LEAN}, a pure lazy \glsxtrlong{FP} language based on graph rewriting}
 }
 \newglossaryentry{HASKELL}{%
        name=Haskell,
-       description={is a pure lazy \acrlong{FP} language designed by a committe as a concept language}
+       description={is a pure lazy \glsxtrlong{FP} language designed by a committe as a concept language}
 }
 \newglossaryentry{HASKELL98}{%
        name=Haskell98,
-       description={is a standardised version of \gls{HASKELL}}
+       description={is a standardised version of \gls{HASKELL}},
 }
 \newglossaryentry{ARDUINO}{%
        name=Arduino,
        name=WEMOS,
        description={is a popular ESP8266 microprocessor based prototyping platform supporting \gls{ARDUINO}.}
 }
+
+% Never expand
+\glsunset{3COWS}
+\glsunset{CEFP}
+\glsunset{TCP}
+\glsunset{IDE}
+\glsunset{IO}
+\glsunset{OS}
+\glsunset{RAM}
similarity index 91%
rename from intro/introduction.tex
rename to intro/intro.tex
index 3897350..53d3b15 100644 (file)
@@ -3,7 +3,7 @@
 \input{subfilepreamble}
 
 \begin{document}
-\chapter{Prelude}%
+\chapter{Introduction}%
 \label{chp:introduction}
 
 \begin{chapterabstract}
@@ -78,7 +78,7 @@ Writing idiomatic domain-specific code in an \gls{DSL} is easy but this may come
 \begin{figure}[ht]
        \centering
        \includestandalone{hyponymy_of_dsls}
-       \caption{Hyponymy of \glspl{DSL} (adapted from \citet[\citepage{2}]{mernik_extensible_2013})}%
+       \caption{Hyponymy of \glspl{DSL} (adapted from \citet[pg.\ 2]{mernik_extensible_2013})}%
        \label{fig:hyponymy_of_dsls}
 \end{figure}
 
@@ -90,7 +90,7 @@ Examples of standalone \glspl{DSL} are regular expressions, make, yacc, XML, SQL
 
 A dichotomous approach is embedding the \gls{DSL} in a host language, i.e.\ \glspl{EDSL}~\citep{hudak_modular_1998}.
 By defining the language as constructs in the host language, much of the machinery is inherited and the cost of creating embedded languages is very low.
-There is more linguistic reuse \citep{krishnamurthi_linguistic_2001}.
+There is more linguistic reuse~\cite{krishnamurthi_linguistic_2001}.
 There are however two sides to the this coin.
 If the syntax of the host language is not very flexible, the syntax of the \gls{DSL} may become clumsy.
 Furthermore, errors shown to the programmer may be larded with host language errors, making it difficult for a non-expert of the host language to work with the \gls{DSL}.
@@ -129,7 +129,7 @@ This approach to software development is called \gls{TOSD}~\citep{wang_maintaini
                \includestandalone{tosd}
                \caption{\Gls{TOSD} approach.}
        \end{subfigure}
-       \caption{Separation of concerns in a traditional setting and in \gls{TOSD} (adapted from \citet[\citesection{1}]{wang_maintaining_2018}).}%
+       \caption{Separation of concerns in a traditional setting and in \gls{TOSD} (adapted from~\cite[pg.\ 20]{wang_maintaining_2018}).}%
        \label{fig:tosd}
 \end{figure}
 
@@ -161,11 +161,12 @@ While \gls{ITASK} conceived \gls{TOP}, it is not the only \gls{TOP} language.
 \citet{piers_task-oriented_2016} created \textmu{}Task, a \gls{TOP} language for specifying non-interruptible embedded systems implemented as an \gls{EDSL} in \gls{HASKELL}.
 \citet{van_gemert_task_2022} created LTasks, a \gls{TOP} language for interactive terminal applications implemented in LUA, a dynamically typed imperative language.
 \citet{lijnse_toppyt_2022} created Toppyt, a \gls{TOP} language based on \gls{ITASK}, implemented in \gls{PYTHON}, but designed to be simpler and smaller.
-Finally there is \gls{MTASK}, \gls{TOP} language designed for defining workflow for \gls{IOT} devices \citep{koopman_task-based_2018}.
+Finally there is \gls{MTASK}, \gls{TOP} language designed for defining workflow for \gls{IOT} devices~\cite{koopman_task-based_2018}.
 It is written in \gls{CLEAN} as an \gls{EDSL} fully integrated with \gls{ITASK} and allows the programmer to define all layers of an \gls{IOT} system from a single source.
 
 \section{Outline}
-Wikipedia defines a rhapsody as follows \citep{wikipedia_contributors_rhapsody_2022}:
+\todo[inline]{uitbreiden}
+On Wikipedia, a rhapsody is defined as follows~\citep{wikipedia_contributors_rhapsody_2022}:
 \begin{quote}
        A \textbf{rhapsody} in music is a one-movement work that is episodic yet integrated, free-flowing in structure, featuring a range of highly contrasted moods, colour, and tonality. An air of spontaneous inspiration and a sense of improvisation make it freer in form than a set of variations.
 \end{quote}
@@ -179,26 +180,22 @@ This movement is a cumulative---paper-based---movement that focusses on techniqu
 After reading the first chapter, subsequent chapters in this movement are readable independently.
 
 \subsubsection*{\fullref{chp:dsl_embedding_techniques}}
-This chapter outlines the basic \gls{DSL} embedding techniques and compares the properties of several embedding methods.
-By example, it provides intuition on shallow embedding, including tagless-final embedding and deep embedding, including deep embedding with \acrshortpl{GADT}.
-It is not based on a paper but written as gentle background material for the subsequent chapters in the movement.
+This chapter shows the basic \gls{DSL} embedding techniques and compares the properties of several embedding methods.
+This chapter is not based on a paper and written as a extra background material for the subsequent chapters in the movement.
 
 \subsubsection*{\fullref{chp:classy_deep_embedding}}
-This chapter is based on the paper: \citeentry{lubbers_deep_2022}\todo{change in-press when published}
+This chapter is based on the paper: \bibentry{lubbers_deep_2022}\todo{change in-press when published}.
 
 While supervising \citeauthor{amazonas_cabral_de_andrade_developing_2018}'s \citeyear{amazonas_cabral_de_andrade_developing_2018} Master's thesis, focussing on an early version of \gls{MTASK}, a seed was planted for a novel deep embedding technique for \glspl{DSL} where the resulting language is extendible both in constructs and in interpretation using type classes and existential data types.
 Slowly the ideas organically grew to form the technique shown in the paper.
 
 The research from this paper and writing the paper was solely performed by me.
 \Cref{sec:classy_reprise} was added after publication and contains a (yet) unpublished extension of the embedding technique.
-The related work section (\cref{sec:cde:related}) is also brought up to date.\todo{weghalen als dit niet het geval is}
 
 \subsubsection*{\fullref{chp:first-class_datatypes}}
-This chapter is based on the paper: \citeentry{lubbers_first-class_2022}\todo{change when accepted}
+This chapter is based on the paper: \bibentry{lubbers_first-class_2022}\todo{change when accepted}.
 
-When embedding \glspl{DSL} many features of the host language can be inherited.
-However, data types from the host are not first-class citizens, in order to use the datatypes, access functions need to be created in the \gls{DSL} resulting in boilerplate.
-This paper shows how to inherit data types from the host language in \glspl{EDSL} using metaprogramming by generating the boilerplate required.
+It shows how to inherit data types from the host language in \glspl{EDSL} using metaprogramming.
 
 The research in this paper and writing the paper was performed by me, though there were weekly meetings with Pieter Koopman and Rinus Plasmeijer in which we discussed and refined the ideas.
 
@@ -206,12 +203,12 @@ The research in this paper and writing the paper was performed by me, though the
 This part is a monograph focussing on \glspl{TOP} for the \gls{IOT} and hence are the chapters best read in order.
 The monograph is compiled from the following papers and revised lecture notes.
 
+\newcommand{\citeentry}[1]{\begin{NoHyper}\bibentry{#1}\end{NoHyper}. \citep{#1}}
 \begin{itemize}
        \item \citeentry{koopman_task-based_2018}
 
-               While an imperative predecessor of \gls{MTASK} was conceived in 2017 \citep{plasmeijer_shallow_2016}, this paper showed the first \gls{TOP} version of \gls{MTASK}.
-               It shows the design of the language and three intepretations: pretty printing, simulation using \gls{ITASK} and \gls{C} code generation.
-               Pieter Koopman wrote the paper, I helped with the software and research.
+               This was the initial \gls{TOP}/\gls{MTASK} paper.
+               Pieter Koopman wrote it, I helped with the software and research.
        \item \citeentry{lubbers_task_2018}
                
                This paper was an extension of my Master's thesis~\citep{lubbers_task_2017}.
index a6e1fde..f12fde3 100644 (file)
--- a/other.bib
+++ b/other.bib
@@ -1726,6 +1726,14 @@ Publisher: Association for Computing Machinery},
        year = {2022},
 }
 
+@misc{lubbers_htask_2022,
+       title = {hTask},
+       url = {https://gitlab.com/mlubbers/acsds},
+       urldate = {2022-10-17},
+       author = {Lubbers, Mart},
+       year = {2022},
+}
+
 @article{sun_compositional_2022,
        title = {Compositional {Embeddings} of {Domain}-{Specific} {Languages}},
        volume = {6},
index 26b8e42..984b7fa 100644 (file)
 \newcommand{\fullref}[1]{\Cref{#1}: \nameref{#1}}
 
 % Glossaries and acronyms
-\usepackage[nolangwarn,acronym,nonumberlist]{glossaries}
+\usepackage[nolangwarn,acronym,nonumberlist]{glossaries-extra}
 \Addlcwords{of}
 % Titlecase glossary commands
 \newcommand{\glst}[1]{\titlecap{\glsentrylong{#1}}}
 \newcommand{\Glst}[1]{\glst{#1}}
 % Fix gls in hyperlink errors
 \pdfstringdefDisableCommands{%
-       \def\acrlong#1{}%
-       \def\acrlongpl#1{}%
-       \def\acrshort#1{}%
-       \def\acrshortpl#1{}%
+       \def\glsxtrlong#1{}%
+       \def\glsxtrlongpl#1{}%
+       \def\glsxtrshort#1{}%
+       \def\glsxtrshortpl#1{}%
        \def\acrfull#1{}%
        \def\acrfullpl#1{}%
-       \def\Acrlong#1{}%
-       \def\Acrlongpl#1{}%
-       \def\Acrshort#1{}%
-       \def\Acrshortpl#1{}%
+       \def\Glsxtrlong#1{}%
+       \def\Glsxtrlongpl#1{}%
+       \def\Glsxtrshort#1{}%
+       \def\Glsxtrshortpl#1{}%
        \def\Acrfull#1{}%
        \def\Acrfullpl#1{}%
        \def\gls#1{}%
index 96c7259..13d489a 100644 (file)
@@ -1,4 +1,5 @@
-\ifSubfilesClassLoaded{
+\ifSubfilesClassLoaded{%
        \pagenumbering{arabic}
        \externaldocument{thesis}
-}{}
+}{%
+}
index 4d3cc66..461372e 100644 (file)
@@ -1,6 +1,6 @@
 \documentclass[twoside,10pt]{book}
 
-\def\mytitle{Orchestrating the Internet of Things with Task-Oriented Programming}
+\def\mytitle{Orchestrating the Internet of Things\texorpdfstring{\\}{ }with Task-Oriented Programming}
 \def\mysubtitle{a purely functional rhapsody}
 \def\myauthor{Mart Lubbers}
 \def\mydate{\formatdate{31}{12}{2022}}
@@ -17,8 +17,6 @@
        linecolor=black,
        size=tiny,
 }
-%\newcommand{\todo}[2][1]{1}
-%\newcommand{\listoftodos}{}
 
 % Document info
 \title{\mytitle{} --- \mysubtitle{}}
@@ -57,7 +55,7 @@
 \setcounter{chapter}{-1}
 
 % Introduction
-\subfile{intro/introduction}
+\subfile{intro/intro}
 % DSL
 
 \part[\'Etude: Domain-Specific Languages]{\'Etude:\\[2ex]\smaller{}Domain-Specific Languages}%
@@ -68,7 +66,7 @@
 
 \part[Oratorio: Task-Oriented Programming]{Oratorio\\[2ex]\smaller{}Task-Oriented Programming for the Internet of Things}%
 \label{prt:top}
-\subfile{top/mtask} % MTask tutorial and implementation
+\subfile{top/top} % MTask tutorial and implementation
 
 \part[Transformation: Tiered vs.\ Tierless Programming]{Transformation:\\[2ex]\smaller{}Tiered vs.\ Tierless Programming}%
 \label{prt:tvt}
 % Glossary
 \addcontentsline{toc}{chapter}{Glossary}%
 \label{chp:glossaries}
-\printglossary%
-%\printglossary[type=\acronymtype,style=mcolindex]%
-\printglossary[type=\acronymtype]%
+\printglossary[style=mcolindex]%
+\printglossary[type=\acronymtype,style=mcolindex]%
 
 %% Lists of
 %\cleardoublepage{}
diff --git a/top/beyond_microprocessors.tex b/top/beyond_microprocessors.tex
deleted file mode 100644 (file)
index 4b4d410..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-\documentclass[../thesis.tex]{subfiles}
-
-\begin{document}
-\ifSubfilesClassLoaded{
-       \pagenumbering{arabic}
-}{}
-
-\chapter{\texorpdfstring{\acrshort{TOP}}{TOP} for \texorpdfstring{\acrshort{IOT}}{IoT} beyond microprocessors}%
-\label{chp:async_shares}
-Async shares paper (parts of TIOT).
-
-\input{subfilepostamble}
-\end{document}
diff --git a/top/integration.tex b/top/integration.tex
deleted file mode 100644 (file)
index 6bb3811..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-\documentclass[../thesis.tex]{subfiles}
-
-\begin{document}
-\ifSubfilesClassLoaded{
-       \pagenumbering{arabic}
-}{}
-
-\chapter{Integrating mTask tasks with iTask}%
-\label{chp:integrating_mtask}
-IFL18 paper
-
-\input{subfilepostamble}
-\end{document}
diff --git a/top/interpreting.tex b/top/interpreting.tex
deleted file mode 100644 (file)
index 79a82c9..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-\documentclass[../thesis.tex]{subfiles}
-
-\begin{document}
-\ifSubfilesClassLoaded{
-       \pagenumbering{arabic}
-}{}
-
-\chapter{Executing mTask tasks on microcontrollers}%
-\label{chp:executing_mtask}
-IFL19 paper
-4COWS paper
-
-Paper van Sjoerds thesis
-
-\input{subfilepostamble}
-\end{document}
diff --git a/top/mtask_by_example.tex b/top/mtask_by_example.tex
deleted file mode 100644 (file)
index 5accbeb..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-\documentclass[../thesis.tex]{subfiles}
-
-\begin{document}
-\ifSubfilesClassLoaded{
-       \pagenumbering{arabic}
-}{}
-
-\chapter{mTask by example}%
-\label{chp:mtask_by_example}
-Hiermee beginnen, dan is het gelijk duidelijk hoe mTask werkt, dan zijn de volgende chapters implementatie dingen.
-
-CEFP19 lecture notes. Dit evt.\ ook gecombineerd met energy aware \gls{TOP} programming en CEFP22 lecture notes.
-
-\input{subfilepostamble}
-\end{document}
similarity index 99%
rename from top/mtask.tex
rename to top/top.tex
index 95a01c2..25200c4 100644 (file)
@@ -85,7 +85,7 @@ void loop() {
 Unfortunately, this does not work because the \arduinoinline{delay} function blocks all further execution.
 The resulting program will blink the \glspl{LED} after each other instead of at the same time.
 To overcome this, it is necessary to slice up the blinking behaviour in very small fragments so it can be manually interleaved~\citep{feijs_multi-tasking_2013}.
-\Cref{lst:blinkthread} shows how three different blinking patterns might be achieved in \gls{ARDUINO} using the slicing method.
+Listing~\ref{lst:blinkthread} shows how three different blinking patterns might be achieved in \gls{ARDUINO} using the slicing method.
 If we want the blink function to be a separate parametrizable function we need to explicitly provide all references to the required state.
 Furthermore, the \arduinoinline{delay} function can not be used and polling \arduinoinline{millis} is required.
 The \arduinoinline{millis} function returns the number of milliseconds that have passed since the boot of the microprocessor.
@@ -256,7 +256,7 @@ For convenience, there are many lower-cased macro definitions for often used con
 \Cref{lst:example_exprs} shows some examples of these expressions.
 \cleaninline{e0} defines the literal $42$, \cleaninline{e1} calculates the literal $42.0$ using real numbers.
 \cleaninline{e2} compares \cleaninline{e0} and \cleaninline{e1} as integers and if they are equal it returns the \cleaninline{e2}$/2$ and \cleaninline{e0} otherwise.
-\cleaninline{approxEqual} performs an approximate equality---albeit not taking into account all floating point pecularities---and demonstrates that \gls{CLEAN} can be used as a macro language, i.e.\ maximise linguistic reuse \citep{krishnamurthi_linguistic_2001}.
+\cleaninline{approxEqual} performs an approximate equality---albeit not taking into account all floating point pecularities---and demonstrates that \gls{CLEAN} can be used as a macro language, i.e.\ maximise linguistic reuse~\cite{krishnamurthi_linguistic_2001}.
 \todo{uitzoeken waar dit handig is}
 When calling \cleaninline{approxEqual} in an \gls{MTASK} function, the resulting code is inlined.
 
diff --git a/tvt/img/arch.pdf b/tvt/img/arch.pdf
new file mode 100644 (file)
index 0000000..f104628
Binary files /dev/null and b/tvt/img/arch.pdf differ
diff --git a/tvt/img/bar_chart.pdf b/tvt/img/bar_chart.pdf
new file mode 100644 (file)
index 0000000..2abbc1b
Binary files /dev/null and b/tvt/img/bar_chart.pdf differ
index 9679a93..30cd6ac 100644 (file)
@@ -1,10 +1,8 @@
 \documentclass[../thesis.tex]{subfiles}
 
-\begin{document}
-\ifSubfilesClassLoaded{
-       \pagenumbering{arabic}
-}{}
+\include{subfilepreamble}
 
+\begin{document}
 \chapter{Could Tierless Languages Reduce IoT Development Grief?}%
 \label{chp:smart_campus}
 
@@ -71,7 +69,7 @@ The current work extends~\citep{lubbers_tiered_2020} as follows. Contributions C
 \section{Background and related work}%
 \label{sec_t4t:Background}
 
-\subsection{\texorpdfstring{\Acrlong{UOG}}{University of Glasgow} smart campus}%
+\subsection{\texorpdfstring{\Glsxtrlong{UOG}}{University of Glasgow} smart campus}%
 \label{sec_t4t:UoGSmartCampus}
 % Jeremy
 The \gls{UOG} is partway through a ten-year campus
@@ -262,7 +260,7 @@ A key difference is how state is handled: \gls{HASKELL} typically embeds statefu
 In contrast, \gls{CLEAN} has a uniqueness type system to ensure the single-threaded use of stateful objects like files and windows~\citep{barendsen_smetsers_1996}.
 Both \gls{CLEAN} and \gls{HASKELL} support fairly similar models of generic programming~\citep{ComparingGenericProgramming}, enabling functions to work on many types. As we shall see generic programming is heavily used in task-oriented programming~\citep{GenericProgrammingExtensionForClean,HinzeGenericFunctionalProgramming}, for example to construct web editors and communication protocols that work for any user-defined datatype.
 
-\subsection{\texorpdfstring{\Acrlong{TOP}}{Task-oriented programming}}
+\subsection{\texorpdfstring{\Glsxtrlong{TOP}}{Task-oriented programming}}
 
 \Gls{TOP} is a declarative programming paradigm for constructing interactive distributed systems~\citep{plasmeijer_task-oriented_2012}.
 Tasks are the basic blocks of \gls{TOP} and represent work that needs to be done in the broadest sense.