From: Mart Lubbers Date: Sun, 21 May 2017 10:44:51 +0000 (+0200) Subject: add sections about the original mTask X-Git-Tag: hand-in~122 X-Git-Url: https://git.martlubbers.net/?a=commitdiff_plain;h=0318eb1b212df7d3980f268f03429936d2f1d617;p=msc-thesis1617.git add sections about the original mTask --- diff --git a/appendix-planning.tex b/appendix-planning.tex index 42da646..2e4e7bf 100644 --- a/appendix-planning.tex +++ b/appendix-planning.tex @@ -28,20 +28,20 @@ \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} diff --git a/introduction.tex b/introduction.tex index 0f86d15..4d1dded 100644 --- a/introduction.tex +++ b/introduction.tex @@ -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 index 0000000..837933d --- /dev/null +++ b/methods.mtask.tex @@ -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} diff --git a/methods.tex b/methods.tex index 9436474..2c8e198 100644 --- a/methods.tex +++ b/methods.tex @@ -1,3 +1,5 @@ \input{methods.top.tex} \input{methods.dsl.tex} + +\input{methods.mtask.tex} diff --git a/thesis.bib b/thesis.bib index fc0050d..db81fc6 100644 --- a/thesis.bib +++ b/thesis.bib @@ -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, @@ -27,31 +30,30 @@ 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 —\; 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, @@ -64,34 +66,21 @@ 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 —\; 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, @@ -107,23 +96,34 @@ 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, @@ -133,7 +133,7 @@ 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, @@ -145,5 +145,5 @@ 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 diff --git a/thesis.pre b/thesis.pre index 8f384f2..87fd6a0 100644 --- a/thesis.pre +++ b/thesis.pre @@ -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 @@ -72,34 +75,34 @@ % {++}{{$+\!\!+$}}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 } diff --git a/thesis.tex b/thesis.tex index b08f29a..d36ac86 100644 --- a/thesis.tex +++ b/thesis.tex @@ -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} @@ -68,10 +69,10 @@ \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}