add sections about the original mTask
authorMart Lubbers <mart@martlubbers.net>
Sun, 21 May 2017 10:44:51 +0000 (12:44 +0200)
committerMart Lubbers <mart@martlubbers.net>
Sun, 21 May 2017 10:45:32 +0000 (12:45 +0200)
appendix-planning.tex
introduction.tex
methods.mtask.tex [new file with mode: 0644]
methods.tex
thesis.bib
thesis.pre
thesis.tex

index 42da646..2e4e7bf 100644 (file)
                \midrule
                \multicolumn{2}{c}{Future thesis work}\\
                \midrule
-               3-9 April & Dynamic task and share allocation, NodeMCU support\\
-               10-16 April & Functions, finish up dynamic allocation\\
+               3{-}9 April & Dynamic task and share allocation, NodeMCU support\\
+               10{-}16 April & Functions, finish up dynamic allocation\\
                & come up with nice demo\\
-               17-23 April & Not much, my wedding\\
-               24-30 April & Start writing introduction and literatu embedding.\\
+               17{-}23 April & Not much, my wedding\\
+               24{-}30 April & Start writing introduction and literatu embedding.\\
                & Use real shares and share shares between tasks\\
-               1-7 May & Have hardware for demo working\\
-               8-14 May & Introduction done\\
-               15-21 May & Method section done\\
-               22-28 May & Demo done\\
-               29 May - 4 June & Results and discussion done\\
-               5-11 June & Preliminary thesis version finished\\
-               12-18 June & Polish demo and thesis\\
-               19-25 June & Finished demo and thesis\\
+               1{-}7 May & Have hardware for demo working\\
+               8{-}14 May & Introduction done\\
+               15{-}21 May & Method section done\\
+               22{-}28 May & Demo done\\
+               29 May {-} 4 June & Results and discussion done\\
+               5{-}11 June & Preliminary thesis version finished\\
+               12{-}18 June & Polish demo and thesis\\
+               19{-}25 June & Finished demo and thesis\\
                26 June & Finished\\
                \bottomrule
        \end{tabular}
index 0f86d15..4d1dded 100644 (file)
@@ -44,8 +44,8 @@ The structure of the thesis is as follows.
 Chapter~\ref{chp:introduction} contains the problem statement, motivation and
 the structure of the document.
 Chapter~\ref{chp:methods} describes the foundations on which the implementation
-is built together with the new techniques introduced.
-Chapter~\ref{chp:results} shows the results in the form of an example
+is built.
+Chapter~\ref{chp:results} shows the new techniques deviced and an example
 application accompanied with implementation.
 Chapter~\ref{chp:conclusion} concludes by answering the research questions
 and discusses future research.
diff --git a/methods.mtask.tex b/methods.mtask.tex
new file mode 100644 (file)
index 0000000..837933d
--- /dev/null
@@ -0,0 +1,142 @@
+\section{mTask}
+The \gls{mTask}-\gls{EDSL} is the basis on which the system is built. The
+\gls{mTask} was created by Koopman et al.\ to support several views such as an
+\gls{iTasks} simulation and a \gls{C}-code generator. The \gls{EDSL} was
+designed to generate a ready to compile \gls{TOP}-like system for
+microcontrollers such as the Arduino\cite{koopman_type-safe_nodate}%
+\cite{plasmeijer_shallow_2016}.
+
+The \gls{mTask}-\gls{EDSL} is a shallowly embedded class based \gls{EDSL} and
+therefore it is very suitable to have a new backend that partly implements the
+given classes. The following subsections show the details of the \gls{EDSL}
+that are used in the extension. The parts of the \gls{EDSL} that are not used
+will not be discussed and the details of those parts can be found in the cited
+literature.
+
+A view for the \gls{mTask}-\gls{EDSL} is a type of kind \CI{*->*->*} that
+implements some of the classes given. The types do not have to be present as
+fields in the higher kinded view and can, and will most often, solely be
+phantom types. A view is of the form \CI{v t r}. The first variable will be the
+type of the view, the second type variable will be the type of the
+\gls{EDSL}-expression and the third type variable represents the role of the
+expression. Currently the role of the expressions form a hierarchy. The three
+roles and their hierarchy are shown in Listing~\ref{lst:exprhier}. This implies
+that everything is a statement, only a \CI{Upd} and a \CI{Expr} are
+expressions. The \CI{Upd} restriction describes updatable expressions such as
+\gls{GPIO} pins and \gls{SDS}.
+
+\begin{lstlisting}[%
+       language=Clean,label={lst:exprhier},caption={Expression role hierarchy}]
+:: Upd   = Upd
+:: Expr  = Expr
+:: Stmt  = Stmt
+
+class isExpr a :: a -> Int
+instance isExpr Upd
+instance isExpr Expr
+\end{lstlisting}
+
+\subsection{Expressions}
+Expressions in the \gls{mTask}-\gls{EDSL} are divided into two types, namely
+boolean expressions and arithmetic expressions. The class of arithmetic
+language constructs also contains the function \CI{lit} that lifts a
+host-language value in to the \gls{EDSL} domain. All standard arithmetic
+functions are included but are omitted for brevity. Moreover the class
+restrictions are only shown in the first functions and are later omitted. Both
+the boolean expression and arithmetic expression classes are shown in
+Listing~\ref{lst:arithbool}.
+
+\begin{lstlisting}[language=Clean,label={lst:arithbool},
+       caption={Basic classes for expressions}]
+class arith v where
+  lit           :: t -> v t Expr
+  (+.) infixl 6 :: (v t p) (v t q) -> v t Expr          | +, zero t    & isExpr p & isExpr q
+  (-.) infixl 6 :: (v t p) (v t q) -> v t Expr          | -, zero t    & ...
+  ...
+class boolExpr v where
+  Not           :: (v Bool p) -> v Bool Expr            | ...
+  (&.) infixr 3 :: (v Bool p) (v Bool q) -> v Bool Expr | ...
+  ...
+  (==.) infix 4 :: (v a p) (v a q) -> v Bool Expr       | ==, toCode a & ...
+\end{lstlisting}
+
+\subsection{Control flow}
+\todo{Write this}
+
+\subsection{Input/Output and class extensions}
+All expressions that have an \CI{Upd} role can be assigned to. Examples of such
+expressions are \glspl{SDS} and \gls{GPIO}. Moreover, class extensions can be
+created for specific peripherals such as user LEDs. The classes facilitating
+this are shown in Listing~\ref{lst:sdsio}. In this way the assignment is the
+same for every assignable entity.
+
+\begin{lstlisting}[%
+       language=Clean,label={lst:sdsio},caption={Input/Output classes}]
+:: DigitalPin = D0 | D1 | D2 | D3 | D4 | D5 |D6 | D7 | D8 | D9 | D10 | D11 | D12 | D13
+:: AnalogPin  = A0 | A1 | A2 | A3 | A4 | A5
+:: UserLED = LED1 | LED2 | LED3
+
+class dIO v where dIO :: DigitalPin -> v Bool Upd
+class aIO v where aIO :: AnalogPin -> v Int Upd
+class analogRead v where
+  analogRead :: AnalogPin -> v Int Expr
+  analogWrite :: AnalogPin (v Int p) -> v Int Expr
+class digitalRead v where
+  digitalRead :: DigitalPin -> v Bin Expr
+  digitalWrite :: DigitalPin (v Bool p) -> v Int Expr
+
+:: UserLED = LED1 | LED2 | LED3
+class userLed v where
+  ledOn  :: (v UserLED q) -> (v () Stmt)
+  ledOff :: (v UserLED q) -> (v () Stmt)
+
+class assign v where
+  (=.) infixr 2 :: (v t Upd) (v t p) -> v t Expr | ...
+\end{lstlisting}
+
+A way of storing data in \glspl{mTask} is using \glspl{SDS}. \glspl{SDS} serve
+as variables in the \gls{mTask} and will keep their value across executions.
+The classes associated with \glspl{SDS} are listed in
+Listing~\ref{lst:sdsclass}. The \CI{Main} class is introduced to box an
+\gls{mTask} and make it recognizable by the type system.
+
+\begin{lstlisting}[%
+       language=Clean,label={lst:sdsclass},caption={\glspl{SDS} in \gls{mTask}}]
+:: In a b = In infix 0 a b
+:: Main a = {main :: a}
+
+class sds v where
+  sds :: ((v t Upd)->In t (Main (v c s))) -> (Main (v c s)) | ...
+\end{lstlisting}
+
+\subsection{Example \gls{mTask}}
+\todo{Also explain semantics about running tasks}
+Some example \glspl{mTask} using almost all of the functionality are show in
+Listing~\ref{lst:exmtask}. The \glspl{mTask} shown in the example do not belong
+to a particular view and therefore are of the type \CI{View t r}. The
+\CI{blink} \gls{mTask} show the classic \emph{Arduino} \emph{Hello World!}
+application that blinks a certain LED every interval. The \CI{thermostat}
+\gls{mTask} will enable a digital pin powering a cooling fan when the analog
+pin representing a temperature sensor is too high. \CI{thermostat`} shows the
+same program but now using the assignment style \gls{GPIO}.
+
+\begin{lstlisting}[%
+       language=Clean,label={lst:exmtask},caption={Some example \glspl{mTask}}]
+blink :: Main (View Int Stmt)
+blink = sds \x=1 In sds \led=LED1 In {main =
+  IF (x ==. lit 1) (ledOn led) (ledOff led) :.
+  x =. lit 1 -. x
+  }
+
+thermostat :: Main (View () Stmt)
+thermostat = {main =
+  IF (analogRead A0 >. 50)
+       ( digitalWrite D0 (lit True)  )
+    ( digitalWrite D0 (lit False) )
+  }
+
+thermostat` :: Main (View () Stmt)
+thermostat` = let 
+  a0 = aIO A0
+  d0 = dIO D0 in {main = IF (a0 >. 50) (d0 =. lit True) (d0 =. lit False) }
+\end{lstlisting}
index 9436474..2c8e198 100644 (file)
@@ -1,3 +1,5 @@
 \input{methods.top.tex}
 
 \input{methods.dsl.tex}
+
+\input{methods.mtask.tex}
index fc0050d..db81fc6 100644 (file)
@@ -1,25 +1,28 @@
 
-@article{da_xu_internet_2014,
-       title = {Internet of things in industries: a survey},
-       volume = {10},
-       number = {4},
-       journal = {Industrial Informatics, IEEE Transactions on},
-       author = {Da Xu, Li and He, Wu and Li, Shancang},
-       year = {2014},
-       pages = {2233--2243},
-       file = {IOT industrial survey.pdf:/home/mrl/.mozilla/firefox/a614qfce.default/zotero/storage/EJHG7M8I/IOT industrial survey.pdf:application/pdf}
+@incollection{achten_introduction_2015,
+       title = {An {Introduction} to {Task} {Oriented} {Programming}},
+       booktitle = {Central {European} {Functional} {Programming} {School}},
+       publisher = {Springer},
+       author = {Achten, Peter and Koopman, Pieter and Plasmeijer, Rinus},
+       year = {2015},
+       pages = {187--245},
+       file = {chp%3A10.1007%2F978-3-319-15940-9_5.pdf:/home/mrl/.mozilla/firefox/7b4r727h.default-1470981082057/zotero/storage/ZSDSIIT7/chp%3A10.1007%2F978-3-319-15940-9_5.pdf:application/pdf}
 }
 
-@inproceedings{svenningsson_combining_2012,
-       title = {Combining deep and shallow embedding for {EDSL}},
-       url = {http://link.springer.com/chapter/10.1007/978-3-642-40447-4_2},
-       urldate = {2017-05-10},
-       booktitle = {International {Symposium} on {Trends} in {Functional} {Programming}},
-       publisher = {Springer},
-       author = {Svenningsson, Josef and Axelsson, Emil},
-       year = {2012},
-       pages = {21--36},
-       file = {svenningsson2013combining.pdf:/home/mrl/.mozilla/firefox/a614qfce.default/zotero/storage/NFBGZCZT/svenningsson2013combining.pdf:application/pdf}
+@incollection{plasmeijer_shallow_2016,
+       address = {Cham},
+       series = {Lecture {Notes} in {Computer} {Science}},
+       title = {A {Shallow} {Embedded} {Type} {Safe} {Extendable} {DSL} for the {Arduino}},
+       volume = {9547},
+       isbn = {978-3-319-39109-0 978-3-319-39110-6},
+       url = {http://link.springer.com/10.1007/978-3-319-39110-6},
+       urldate = {2017-02-22},
+       booktitle = {Trends in {Functional} {Programming}},
+       publisher = {Springer International Publishing},
+       author = {Plasmeijer, Rinus and Koopman, Pieter},
+       year = {2016},
+       note = {DOI: 10.1007/978-3-319-39110-6},
+       file = {chp%3A10.1007%2F978-3-319-39110-6_6.pdf:/home/mrl/.mozilla/firefox/7b4r727h.default-1470981082057/zotero/storage/TJVP6FHF/chp%3A10.1007%2F978-3-319-39110-6_6.pdf:application/pdf}
 }
 
 @article{koopman_type-safe_nodate,
        url = {https://tfp2016.org/papers/TFP_2016_paper_7.pdf},
        urldate = {2017-02-22},
        author = {Koopman, Pieter and Plasmeijer, Rinus},
-       file = {TFP_2016_paper_7.pdf:/home/mrl/.mozilla/firefox/a614qfce.default/zotero/storage/WR3PZNTT/TFP_2016_paper_7.pdf:application/pdf}
+       file = {TFP_2016_paper_7.pdf:/home/mrl/.mozilla/firefox/7b4r727h.default-1470981082057/zotero/storage/WR3PZNTT/TFP_2016_paper_7.pdf:application/pdf}
 }
 
-@phdthesis{oortgiese_distributed_2017,
-       address = {Nijmegen},
-       type = {Master},
-       title = {A {Distributed} {Server} {Architecture} for {Task} {Oriented} {Programming}},
-       shorttitle = {A {Distributed} {Server} {Architecture} for {Task} {Oriented} {Programming}},
-       url = {http://www.ru.nl/publish/pages/769526/arjan_oortgiese.pdf},
-       language = {English},
-       urldate = {2017-04-08},
-       school = {Radboud University},
-       author = {Oortgiese, Arjan},
-       year = {2017},
-       file = {arjan_oortgiese.pdf:/home/mrl/.mozilla/firefox/a614qfce.default/zotero/storage/J4WXQXU4/arjan_oortgiese.pdf:application/pdf}
+@inproceedings{brus_cleanlanguage_1987,
+       title = {Clean—a language for functional graph rewriting},
+       url = {http://link.springer.com/chapter/10.1007/3-540-18317-5_20},
+       urldate = {2017-02-24},
+       booktitle = {Conference on {Functional} {Programming} {Languages} and {Computer} {Architecture}},
+       publisher = {Springer},
+       author = {Brus, T. H. and van Eekelen, Marko CJD and Van Leer, M. O. and Plasmeijer, Marinus J.},
+       year = {1987},
+       pages = {364--384},
+       file = {Clean &#x2014\; A language for functional graph rewriting - chp%3A10.1007%2F3-540-18317-5_20.pdf:/home/mrl/.mozilla/firefox/7b4r727h.default-1470981082057/zotero/storage/GCEPPRUJ/chp%3A10.1007%2F3-540-18317-5_20.pdf:application/pdf}
 }
 
-@incollection{achten_introduction_2015,
-       title = {An {Introduction} to {Task} {Oriented} {Programming}},
-       booktitle = {Central {European} {Functional} {Programming} {School}},
-       publisher = {Springer},
-       author = {Achten, Peter and Koopman, Pieter and Plasmeijer, Rinus},
-       year = {2015},
-       pages = {187--245},
-       file = {chp%3A10.1007%2F978-3-319-15940-9_5.pdf:/home/mrl/.mozilla/firefox/a614qfce.default/zotero/storage/ZSDSIIT7/chp%3A10.1007%2F978-3-319-15940-9_5.pdf:application/pdf}
+@article{da_xu_internet_2014,
+       title = {Internet of things in industries: a survey},
+       volume = {10},
+       number = {4},
+       journal = {Industrial Informatics, IEEE Transactions on},
+       author = {Da Xu, Li and He, Wu and Li, Shancang},
+       year = {2014},
+       pages = {2233--2243},
+       file = {IOT industrial survey.pdf:/home/mrl/.mozilla/firefox/7b4r727h.default-1470981082057/zotero/storage/EJHG7M8I/IOT industrial survey.pdf:application/pdf}
 }
 
 @book{lijnse_top_2013,
        author = {Lijnse, Bas},
        year = {2013},
        note = {OCLC: 833851220},
-       file = {103931.pdf:/home/mrl/.mozilla/firefox/a614qfce.default/zotero/storage/9KZ9I6N9/103931.pdf:application/pdf}
-}
-
-@inproceedings{pike_programming_2014,
-       title = {Programming languages for high-assurance autonomous vehicles: extended abstract},
-       isbn = {978-1-4503-2567-7},
-       shorttitle = {Programming languages for high-assurance autonomous vehicles},
-       url = {http://dl.acm.org/citation.cfm?doid=2541568.2541570},
-       doi = {10.1145/2541568.2541570},
-       language = {en},
-       urldate = {2017-05-10},
-       publisher = {ACM Press},
-       author = {Pike, Lee and Hickey, Patrick and Bielman, James and Elliott, Trevor and DuBuisson, Thomas and Launchbury, John},
-       year = {2014},
-       pages = {1--2},
-       file = {pike-plpv14.pdf:/home/mrl/.mozilla/firefox/a614qfce.default/zotero/storage/MTUSHBNF/pike-plpv14.pdf:application/pdf}
+       file = {103931.pdf:/home/mrl/.mozilla/firefox/7b4r727h.default-1470981082057/zotero/storage/9KZ9I6N9/103931.pdf:application/pdf}
 }
 
-@inproceedings{brus_cleanlanguage_1987,
-       title = {Clean—a language for functional graph rewriting},
-       url = {http://link.springer.com/chapter/10.1007/3-540-18317-5_20},
-       urldate = {2017-02-24},
-       booktitle = {Conference on {Functional} {Programming} {Languages} and {Computer} {Architecture}},
-       publisher = {Springer},
-       author = {Brus, T. H. and van Eekelen, Marko CJD and Van Leer, M. O. and Plasmeijer, Marinus J.},
-       year = {1987},
-       pages = {364--384},
-       file = {Clean &#x2014\; A language for functional graph rewriting - chp%3A10.1007%2F3-540-18317-5_20.pdf:/home/mrl/.mozilla/firefox/a614qfce.default/zotero/storage/GCEPPRUJ/chp%3A10.1007%2F3-540-18317-5_20.pdf:application/pdf}
+@phdthesis{oortgiese_distributed_2017,
+       address = {Nijmegen},
+       type = {Master},
+       title = {A {Distributed} {Server} {Architecture} for {Task} {Oriented} {Programming}},
+       shorttitle = {A {Distributed} {Server} {Architecture} for {Task} {Oriented} {Programming}},
+       url = {http://www.ru.nl/publish/pages/769526/arjan_oortgiese.pdf},
+       language = {English},
+       urldate = {2017-04-08},
+       school = {Radboud University},
+       author = {Oortgiese, Arjan},
+       year = {2017},
+       file = {arjan_oortgiese.pdf:/home/mrl/.mozilla/firefox/7b4r727h.default-1470981082057/zotero/storage/J4WXQXU4/arjan_oortgiese.pdf:application/pdf}
 }
 
 @incollection{havelund_practical_2015,
        editor = {Havelund, Klaus and Holzmann, Gerard and Joshi, Rajeev},
        year = {2015},
        note = {DOI: 10.1007/978-3-319-17524-9},
-       file = {mart_paper.pdf:/home/mrl/.mozilla/firefox/a614qfce.default/zotero/storage/5SXR59GR/mart_paper.pdf:application/pdf}
+       file = {mart_paper.pdf:/home/mrl/.mozilla/firefox/7b4r727h.default-1470981082057/zotero/storage/5SXR59GR/mart_paper.pdf:application/pdf}
 }
 
-@incollection{serrano_shallow_2016,
-       address = {Cham},
-       series = {Lecture {Notes} in {Computer} {Science}},
-       title = {A {Shallow} {Embedded} {Type} {Safe} {Extendable} {DSL} for the {Arduino}},
-       volume = {9547},
-       isbn = {978-3-319-39109-0 978-3-319-39110-6},
-       url = {http://link.springer.com/10.1007/978-3-319-39110-6},
-       urldate = {2017-02-22},
-       booktitle = {Trends in {Functional} {Programming}},
-       publisher = {Springer International Publishing},
-       editor = {Serrano, Manuel and Hage, Jurriaan},
-       year = {2016},
-       note = {DOI: 10.1007/978-3-319-39110-6},
-       file = {chp%3A10.1007%2F978-3-319-39110-6_6.pdf:/home/mrl/.mozilla/firefox/a614qfce.default/zotero/storage/TJVP6FHF/chp%3A10.1007%2F978-3-319-39110-6_6.pdf:application/pdf}
+@inproceedings{pike_programming_2014,
+       title = {Programming languages for high-assurance autonomous vehicles: extended abstract},
+       isbn = {978-1-4503-2567-7},
+       shorttitle = {Programming languages for high-assurance autonomous vehicles},
+       url = {http://dl.acm.org/citation.cfm?doid=2541568.2541570},
+       doi = {10.1145/2541568.2541570},
+       language = {en},
+       urldate = {2017-05-10},
+       publisher = {ACM Press},
+       author = {Pike, Lee and Hickey, Patrick and Bielman, James and Elliott, Trevor and DuBuisson, Thomas and Launchbury, John},
+       year = {2014},
+       pages = {1--2},
+       file = {pike-plpv14.pdf:/home/mrl/.mozilla/firefox/7b4r727h.default-1470981082057/zotero/storage/MTUSHBNF/pike-plpv14.pdf:application/pdf}
+}
+
+@inproceedings{svenningsson_combining_2012,
+       title = {Combining deep and shallow embedding for {EDSL}},
+       url = {http://link.springer.com/chapter/10.1007/978-3-642-40447-4_2},
+       urldate = {2017-05-10},
+       booktitle = {International {Symposium} on {Trends} in {Functional} {Programming}},
+       publisher = {Springer},
+       author = {Svenningsson, Josef and Axelsson, Emil},
+       year = {2012},
+       pages = {21--36},
+       file = {svenningsson2013combining.pdf:/home/mrl/.mozilla/firefox/7b4r727h.default-1470981082057/zotero/storage/NFBGZCZT/svenningsson2013combining.pdf:application/pdf}
 }
 
 @techreport{cheney_first-class_2003,
        institution = {Cornell University},
        author = {Cheney, James and Hinze, Ralf},
        year = {2003},
-       file = {https\://ecommons.cornell.edu/bitstream/handle/1813/5614/?sequence=1:/home/mrl/.mozilla/firefox/a614qfce.default/zotero/storage/R5IFMHTP/5614.pdf:application/pdf}
+       file = {https\://ecommons.cornell.edu/bitstream/handle/1813/5614/?sequence=1:/home/mrl/.mozilla/firefox/7b4r727h.default-1470981082057/zotero/storage/R5IFMHTP/5614.pdf:application/pdf}
 }
 
 @inproceedings{cheney_lightweight_2002,
        author = {Cheney, James and Hinze, Ralf},
        year = {2002},
        pages = {90--104},
-       file = {HW02.pdf:/home/mrl/.mozilla/firefox/a614qfce.default/zotero/storage/A8Z49NK6/HW02.pdf:application/pdf}
+       file = {HW02.pdf:/home/mrl/.mozilla/firefox/7b4r727h.default-1470981082057/zotero/storage/A8Z49NK6/HW02.pdf:application/pdf}
 }
\ No newline at end of file
index 8f384f2..87fd6a0 100644 (file)
@@ -13,6 +13,8 @@
 \usepackage{lipsum}                  % dummy text
 \usepackage{listings}                % source code
 \usepackage{float}                   % floating images
+\usepackage{lmodern}                 % Better teletype fonts
+\usepackage{textcomp}                % Nice listings quotes
 
 \graphicspath{{img/}}
 
@@ -40,7 +42,7 @@
 \lstdefinelanguage{Clean}{%
        alsoletter={ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_`1234567890},
        alsoletter={~!@\#$\%^\&*-+=?<>:|\\.},
-       morekeywords={generic,implementation,definition,dynamic,module,import,from,where,in,of,case,let,infix,infixr,infixl,class,instance,with,if,derive},
+       morekeywords={generic,implementation,definition,dynamic,module,import,from,where,in,of,case,let,infix,infixr,infixl,class,instance,with,if,derive,::},
        sensitive=true,
        morecomment=[l]{//},
        morecomment=[n]{/*}{*/},
@@ -50,6 +52,7 @@
        basewidth=0.45em,
        columns=[c]fixed,
        texcl=true,
+       upquote=true,
        literate=%
                % Basic Clean constructs
                {\\}{{$\lambda\:$}}1
 %              {++}{{$+\!\!+$}}2
 %              {+++}{{$+\!\!\!\!+\!\!\!\!+$}}2
 %              {:==}{{$:==$}}3
-               {\{|*|\}}{{$\{\!|\!\!\star\!\!|\!\}$}}3
+%              {\{|*|\}}{{$\{\!|\!\!\star\!\!|\!\}$}}3
                %
                % Basic iTask constructs
-               {>||>}{{$\triangleright\triangleright$}}2
-               {>>=}{{\texttt{>>=}}}3
-               {>>|}{{\texttt{>>|}}}3
-               {?>>}{{\texttt{?>>}}}3
-               {!>>}{{\texttt{!>>}}}3
-               {-||-}{{\texttt{-||-}}}4
-               {.||.}{{\texttt{.||.}}}4
-               {.&&.}{{\texttt{.\&\&.}}}4
+%              {>||>}{{$\triangleright\triangleright$}}2
+%              {>>=}{{\texttt{>>=}}}3
+%              {>>|}{{\texttt{>>|}}}3
+%              {?>>}{{\texttt{?>>}}}3
+%              {!>>}{{\texttt{!>>}}}3
+%              {-||-}{{\texttt{-||-}}}4
+%              {.||.}{{\texttt{.||.}}}4
+%              {.&&.}{{\texttt{.\&\&.}}}4
 }
 
-\newcommand{\CI}[1]{\lstinline[language=Clean]|#1|}
+\newcommand{\CI}[1]{\lstinline[language=Clean,basicstyle=\ttfamily\fontseries{l}\normalsize]|#1|}
 
 \lstset{%
-       breakatwhitespace=false,         % sets if automatic breaks should only happen at whitespace
-       breaklines=true,                 % sets automatic line breaking
-       captionpos=b,                    % sets the caption-position to bottom
-       keepspaces=true,                 % keeps spaces in text, useful for keeping indentation of code (possibly needs columns=flexible)
-       basicstyle=\ttfamily\footnotesize,        % the size of the fonts that are used for the code
-       commentstyle=\itshape,           % comment style
-       keywordstyle=\bfseries,          % keyword style
-       stringstyle=\ttfamily,           % string literal style
-       showspaces=false,                % show spaces everywhere adding particular underscores; it overrides 'showstringspaces'
-       showstringspaces=false,          % underline spaces within strings only
-       showtabs=false,                  % show tabs within strings adding particular underscores
-       tabsize=4,                       % sets default tabsize to 2 spaces
+       breakatwhitespace=false,                        % sets if automatic breaks should only happen at whitespace
+       breaklines=true,                                % sets automatic line breaking
+       captionpos=b,                                   % sets the caption-position to bottom
+       keepspaces=true,                                % keeps spaces in text, useful for keeping indentation of code (possibly needs columns=flexible)
+       basicstyle=\ttfamily\fontseries{l}\footnotesize,% the size of the fonts that are used for the code
+       commentstyle=\itshape\fontseries{m},            % comment style
+       keywordstyle=\bfseries\fontseries{b},           % keyword style
+       stringstyle=\ttfamily,                          % string literal style
+       showspaces=false,                               % show spaces everywhere adding particular underscores; it overrides 'showstringspaces'
+       showstringspaces=false,                         % underline spaces within strings only
+       showtabs=false,                                 % show tabs within strings adding particular underscores
+       tabsize=4,                                      % sets default tabsize to 2 spaces
        frame=L
 }
 
index b08f29a..d36ac86 100644 (file)
@@ -3,6 +3,7 @@
 \makeglossaries%
 
 \newacronym{GADT}{GADT}{Generalized Algebraic Datatype}
+\newacronym{GPIO}{GPIO}{General-Purpose Input/Output}
 \newacronym{ADT}{ADT}{Algebraic Datatype}
 \newacronym{SDS}{SDS}{Shared Data Source}
 \newacronym{IoT}{IoT}{Internet of Things}
 \chapter{Results}\label{chp:results}
 \input{results.tex}
 
-\chapter{Conclusion \& Discussion}
-\label{chp:conclusion}
+\chapter{Conclusion \& Discussion}\label{chp:conclusion}
 
 \appendix\label{chp:appendix}
+
 \chapter{Planning}\label{app:planning}
 \input{appendix-planning.tex}