From: Mart Lubbers Date: Thu, 16 Feb 2023 17:57:49 +0000 (+0100) Subject: updates X-Git-Url: https://git.martlubbers.net/?a=commitdiff_plain;h=168cd542dfa23e95e458c0e7391104b712628d5b;p=phd-thesis.git updates --- diff --git a/appx/c4hp.tex b/appx/c4hp.tex index 56b80b0..7c986f2 100644 --- a/appx/c4hp.tex +++ b/appx/c4hp.tex @@ -15,7 +15,7 @@ Obviously, this summary is not exhaustive. Some \gls{CLEAN} language elements that are not easily translatable to \gls{HASKELL} and thus do not occur in the summary following below. We hope you enjoy these notes and that it aids you in reading \gls{CLEAN} programs. -\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}. +\Gls{CLEAN}---acronym for Clean Language of East-Anglia and Nijmegen \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 concurrency 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. diff --git a/latexmkrc b/latexmkrc index 690ee71..0b88e75 100644 --- a/latexmkrc +++ b/latexmkrc @@ -35,7 +35,6 @@ push @generated_exts, 'sta'; # Clean bbl file as well $bibtex_use = 2; -$bibtex = "bibtex8 --wolfgang %O %S"; # Clean mkindex files $clean_ext .= ' %R.ist %R.xdy'; diff --git a/preamble.tex b/preamble.tex index b5b123e..ae176ee 100644 --- a/preamble.tex +++ b/preamble.tex @@ -1,5 +1,23 @@ \usepackage[utf8]{inputenc} % Input encoding \usepackage[T2A,T1]{fontenc} % Font encoding +\usepackage{ifxetex} +\ifxetex% + \usepackage{amsmath} % extra math + \usepackage{fontspec} + \usepackage{polyglossia} + \setmainlanguage[variant=british]{english} + \setotherlanguage{dutch} + \setotherlanguage{russian} + \newfontfamily{\cyrillicfont}{Liberation Serif} +\else + \usepackage{lmodern} % Nicer font + \usepackage{microtype} % Better kerning + \usepackage{amsmath} % extra math + \usepackage{amssymb} % extra math symbols + + \usepackage[dutch,russian,british]{babel} +% \babelfont[russian]{rm}{Liberation Serif} +\fi % Typography, widows, orphans, fonts \input{preamble/typography} @@ -35,4 +53,4 @@ \usepackage{subfiles} % Metadata (only works in main document) and should go after subfiles -\input{preamble/metadata} +%\input{preamble/metadata} diff --git a/preamble/bibliography.tex b/preamble/bibliography.tex index b658bb5..b755bda 100644 --- a/preamble/bibliography.tex +++ b/preamble/bibliography.tex @@ -4,7 +4,7 @@ %\setcitestyle{numbers} %\bibliographystyle{alpha} \bibliographystyle{abbrvnat} -\apptocmd{\thebibliography}{\raggedright}{}{} +%\apptocmd{\thebibliography}{\raggedright}{}{} \makeatletter \let\saved@bibitem\@bibitem% diff --git a/preamble/commands.tex b/preamble/commands.tex index 9f4a809..955cfc0 100644 --- a/preamble/commands.tex +++ b/preamble/commands.tex @@ -3,7 +3,7 @@ \newcommand{\aramsingh}{Ramsingh, A.\ (University of Glasgow)} \newcommand{\dcolon}[0]{\mathbin{::}} \newcommand{\doifmt}[1]{\href{https://doi.org/#1}{#1}} -\newcommand{\etc}{{\fontfamily{cmr}\selectfont{\itshape\/\&\kern-0.2em c}}} +\newcommand{\etc}{{\itshape\/\&\kern-0.2em c}} \newcommand{\jsinger}{Singer, J.\ (University of Glasgow)} \newcommand{\mlubbers}{Lubbers, M.\ (Radboud University)} \newcommand{\pkoopman}{Koopman, P.\ (Radboud University)} diff --git a/preamble/glossaries.tex b/preamble/glossaries.tex index 661ddc1..97975b6 100644 --- a/preamble/glossaries.tex +++ b/preamble/glossaries.tex @@ -1,187 +1,176 @@ -\usepackage[nolangwarn,abbreviations,nonumberlist,prefix]{glossaries-extra} +\usepackage[nolangwarn,nonumberlist,prefix]{glossaries-extra} \setabbreviationstyle{long-short-sc} \setabbreviationstyle[noexpand]{short-nolong} +\setabbreviationstyle[scabbr]{short-sc-nolong} \Addlcwords{of} +\glssetcategoryattribute{abbreviation}{glossname}{uc} +\glssetcategoryattribute{noexpand}{glossname}{uc} +\glssetcategoryattribute{scabbr}{glossname}{uc} +\GlsXtrEnableInitialTagging{acronym,abbreviation}{\itag} + +\newcommand*{\glsxtrpostnameacronym}{% + \space\rm\glsentrylong{\glscurrententrylabel}, % +} +%\renewcommand*{\glsxtrpostdescabbreviation}{% +% \space (initialism)% +%} + \usepackage{glossary-mcols} \pdfstringdefDisableCommands{% \def\glsxtrlong#1{}% \def\glsxtrlongpl#1{}% \def\glsxtrshort#1{}% \def\glsxtrshortpl#1{}% - \def\acrfull#1{}% - \def\acrfullpl#1{}% \def\Glsxtrlong#1{}% \def\Glsxtrlongpl#1{}% \def\Glsxtrshort#1{}% \def\Glsxtrshortpl#1{}% - \def\Acrfull#1{}% - \def\Acrfullpl#1{}% \def\gls#1{}% \def\glspl#1{}% - \def\glsentrytext#1{}% \def\Gls#1{}% \def\Glspl#1{}% - \def\Glsentrytext#1{}% - \def\titlecap#1{}% \def\MakeUppercase#1{}% } % Initialize the glossaries \makeglossaries% -% Acronym -\newcommand{\myacronym}[4][]{% -% \newacronym[type=\glsdefaulttype,#1]{#2}{#3}{#4} - \newabbreviation[#1]{#2}{#3}{#4} -} -\myacronym[category=noexpand]{3COWS}{3cows}{The three ``CO'' (Composability, Comprehensibility, Correctness) winter school} -\myacronym{ADC}{adc}{analog-to-digital converter} -\myacronym{ADT}{adt}{algebraic data type} -\myacronym{AST}{ast}{abstract syntax tree} -\myacronym{API}{api}{application programming interface} -\myacronym{ARDSL}{ardsl}{\gls{ARDUINO} \glsxtrshort{DSL}} -\myacronym[category=noexpand]{CEFP}{cefp}{Central European \glsxtrlong{FP} School} -\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{CWTS}{cwts}{\gls{CLEAN} \gls{WEMOS} temperature sensor} -\myacronym{DHT}{dht}{digital humidity and temperature} -\myacronym{DSL}{dsl}{domain-specific language} -\myacronym{DVFS}{dvfs}{dynamic voltage and frequency scaling} -\myacronym{ECO2}{eCO\textsubscript{2}}{equivalent carbon dioxide} -\myacronym{EDSL}{edsl}{embedded \glsxtrlong{DSL}} -\myacronym[prefixfirst={a\ },prefix={an\ }]{FP}{fp}{functional programming} -\myacronym[prefixfirst={a\ },prefix={an\ }]{FRP}{frp}{functional reactive programming} -\myacronym[prefixfirst={a\ },prefix={an\ }]{FPGA}{fpga}{field-programmable gate array} -\myacronym{GADT}{gadt}{generalised \glsxtrshort{ADT}} -\myacronym{GHC}{ghc}{Glasgow \gls{HASKELL} Compiler} -\myacronym{GPIO}{gpio}{general-purpose \glsxtrlong{IO}} -\myacronym{GPL}{gpl}{general-purpose language} -\myacronym{GRS}{grs}{graph rewriting system} -\myacronym{GUI}{gui}{graphical \glsxtrlong{UI}} -\myacronym{HOAS}{hoas}{high-order abstract syntax} -\myacronym{IOT}{Io\kern-.3mmT}{internet of things} -\myacronym[category=noexpand]{IDE}{ide}{integrated development environment} -\myacronym[category=noexpand]{IO}{i/o}{input/output} -\myacronym{IR}{ir}{intermediate representation} -\myacronym{ISR}{isr}{interrupt service routine} -\myacronym{LEAN}{lean}{language of East-Anglia and Nijmegen} -\myacronym[category=noexpand,prefixfirst={a\ },prefix={an\ }]{LED}{led}{light-emitting diode} -\myacronym[category=noexpand]{OLED}{oled}{organic \glsxtrshort{LED}} -\myacronym[category=noexpand]{OS}{os}{operating system} -\myacronym{OTA}{ota}{over-the-air} -\myacronym{PIR}{pir}{passive infrared} -\myacronym{PFRP}{p-frp}{priority-based \glsxtrshort{FRP}} -\myacronym{PRS}{prs}{\gls{PYTHON} Raspberry Pi system} -\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 \glsxtrshort{DSL}} -\myacronym[category=noexpand]{RAM}{ram}{random-access memory} -\myacronym{RFID}{rfid}{radio-frequency identification} -\myacronym{RTOS}{rtos}{real-time \glsxtrshort{OS}} -\myacronym{RTS}{rts}{run-time system} -\myacronym[prefixfirst={a\ },prefix={an\ }]{SDS}{sds}{shared data source} -\myacronym[prefixfirst={a\ },prefix={an\ }]{SN}{sn}{sensor network} -\myacronym{SLOC}{sloc}{source lines of code} -\myacronym{TH}{th}{Template \gls{HASKELL}} -\myacronym[category=noexpand]{TCP}{tcp}{transmission control protocol} -\myacronym{TOP}{top}{task-oriented programming} -\myacronym{TOSD}{tosd}{task-oriented software development} -\myacronym{TRS}{trs}{term rewriting system} -\myacronym{TTH}{tth}{typed \glsxtrlong{TH}} -\myacronym{TVOC}{tvoc}{total volatile organic compounds} -\myacronym{UI}{ui}{user interface} -\myacronym{UOD}{uod}{universe of discourse} -\myacronym{UOG}{uog}{University of Glasgow} -\myacronym{VM}{vm}{virtual machine} +% Acronyms +\newacronym[description={the CO\textsubscript{2} concentration calculated from \glsxtrshort{TVOC} measurements}]{ECO2}{(eCO\textsubscript{2})}{equivalent carbon dioxide} +\newacronym[category=scabbr,description={a open data interchange format using human readable text}]{JSON}{{\scshape JSON}}{(JavaScript object notation)} +\newacronym[category=scabbr,description={a publish-subscribe network protocol designed for resource constrained devices}]{MQTT}{{\scshape MQTT}}{(MQ telemetry transport)} +\newacronym[description={a pure lazy \glsxtrlong{FP} language based on graph rewriting}]{CLEAN}{Clean}{(Clean language of East-Anglia and Nijmegen)} +\newacronym[description={a simple serial communication protocol often used to connect sensors to microcontrollers}]{I2C}{I\textsuperscript{2}C}{(inter-integrated circuit)} +\newacronym[category=scabbr,description={passive infrared}]{PIR}{{\scshape PIR}}{} +\newacronym[category=scabbr,description={task-oriented programming}]{TOP}{{\scshape TOP}}{} +\newacronym[category=scabbr,description={the three ``CO'' (composability, comprehensibility, correctness) of working software}]{3COWS}{{\scshape 3COWS}}{} + +% Initialisms +\newabbreviation{ADC}{adc}{analog-to-digital converter} +\newabbreviation{ADT}{adt}{algebraic data type} +\newabbreviation{AST}{ast}{abstract syntax tree} +\newabbreviation{API}{api}{application programming interface} +\newabbreviation{ARDSL}{ardsl}{\gls{ARDUINO} \glsxtrshort{DSL}} +\newabbreviation[category=noexpand]{CEFP}{cefp}{Central European \glsxtrlong{FP} School} +\newabbreviation{CRS}{crs}{\gls{CLEAN} Raspberry Pi system} +\newabbreviation{CRTS}{crts}{\gls{CLEAN} Raspberry Pi temperature sensor} +\newabbreviation{CWS}{cws}{\gls{CLEAN} \gls{WEMOS} system} +\newabbreviation{CWTS}{cwts}{\gls{CLEAN} \gls{WEMOS} temperature sensor} +\newabbreviation{DHT}{dht}{digital humidity and temperature} +\newabbreviation{DSL}{dsl}{domain-specific language} +\newabbreviation{DVFS}{dvfs}{dynamic voltage and frequency scaling} +\newabbreviation{EDSL}{edsl}{embedded \glsxtrlong{DSL}} +\newabbreviation[prefixfirst={a\ },prefix={an\ }]{FP}{fp}{functional programming} +\newabbreviation[prefixfirst={a\ },prefix={an\ }]{FRP}{frp}{functional reactive programming} +\newabbreviation[prefixfirst={a\ },prefix={an\ }]{FPGA}{fpga}{field-programmable gate array} +\newabbreviation{GADT}{gadt}{generalised \glsxtrshort{ADT}} +\newabbreviation{GHC}{ghc}{Glasgow \gls{HASKELL} Compiler} +\newabbreviation{GPIO}{gpio}{general-purpose \glsxtrlong{IO}} +\newabbreviation{GPL}{gpl}{general-purpose language} +\newabbreviation{GRS}{grs}{graph rewriting system} +\newabbreviation{GUI}{gui}{graphical \glsxtrlong{UI}} +\newabbreviation{HOAS}{hoas}{high-order abstract syntax} +%\newabbreviation{IOT}{Io\kern-.3mmT}{internet of things} +\newabbreviation{IOT}{iot}{internet of things} +\newabbreviation[category=noexpand]{IDE}{ide}{integrated development environment} +\newabbreviation[category=noexpand]{IO}{i/o}{input/output} +\newabbreviation{IR}{ir}{intermediate representation} +\newabbreviation{ISR}{isr}{interrupt service routine} +\newabbreviation[category=noexpand,prefixfirst={a\ },prefix={an\ }]{LED}{led}{light-emitting diode} +\newabbreviation[category=noexpand]{OLED}{oled}{organic \glsxtrshort{LED}} +\newabbreviation[category=noexpand]{OS}{os}{operating system} +\newabbreviation{OTA}{ota}{over-the-air} +\newabbreviation{PFRP}{p-frp}{priority-based \glsxtrshort{FRP}} +\newabbreviation{PRS}{prs}{\gls{PYTHON} Raspberry Pi system} +\newabbreviation{PWS}{pws}{\gls{MICROPYTHON} \gls{WEMOS} system} +\newabbreviation{PRTS}{prts}{\gls{PYTHON} Raspberry Pi temperature sensor} +\newabbreviation{PWTS}{pwts}{\gls{MICROPYTHON} \gls{WEMOS} temperature sensor} +\newabbreviation{QDSL}{qdsl}{quoted \glsxtrshort{DSL}} +\newabbreviation[category=noexpand]{RAM}{ram}{random-access memory} +\newabbreviation{RFID}{rfid}{radio-frequency identification} +\newabbreviation{RTOS}{rtos}{real-time \glsxtrshort{OS}} +\newabbreviation{RTS}{rts}{run-time system} +\newabbreviation[prefixfirst={a\ },prefix={an\ }]{SDS}{sds}{shared data source} +\newabbreviation[prefixfirst={a\ },prefix={an\ }]{SN}{sn}{sensor network} +\newabbreviation{SLOC}{sloc}{source lines of code} +\newabbreviation[description={a synchronous serial communication protocol often used to connect sensors to microcontrollers}]{SPI}{SPI}{Serial Peripheral Interface} +\newabbreviation{TH}{th}{Template \gls{HASKELL}} +\newabbreviation[category=noexpand]{TCP}{tcp}{transmission control protocol} +\newabbreviation{TOSD}{tosd}{task-oriented software development} +\newabbreviation{TRS}{trs}{term rewriting system} +\newabbreviation{TTH}{tth}{typed \glsxtrlong{TH}} +\newabbreviation{TVOC}{tvoc}{total volatile organic compounds} +\newabbreviation{UI}{ui}{user interface} +\newabbreviation{UOD}{uod}{universe of discourse} +\newabbreviation{UOG}{uog}{University of Glasgow} +\newabbreviation{VM}{vm}{virtual machine} % Glossaries \newglossaryentry{ABC}{% name=ABC, - description={- \gls{CLEAN}'s intermediate graph-rewriting language}, + description={\gls{CLEAN}'s intermediate graph-rewriting language}, } \newglossaryentry{MTASK}{% name=mTask, - description={- a \glsxtrshort{TOP} \glsxtrshort{EDSL} for edge devices integrated with the \gls{ITASK} system}, + description={a \glsxtrshort{TOP} \glsxtrshort{EDSL} for edge devices integrated with the \gls{ITASK} system}, } \newglossaryentry{ITASK}{% name=iTask, - description={- a \glsxtrshort{TOP} \glsxtrshort{EDSL} for creating distributed multi-user collaborative web applications}, + description={a \glsxtrshort{TOP} \glsxtrshort{EDSL} for creating distributed multi-user collaborative web applications}, } \newglossaryentry{TOPHAT}{% name=TopHat, - description={- a \glsxtrshort{TOP} language designed to formally capture the essence of \gls{TOP}} -} -\newglossaryentry{CLEAN}{% - name=Clean, - description={- Clean \glsxtrlong{LEAN}, a pure lazy \glsxtrlong{FP} language based on graph rewriting} + description={a \glsxtrshort{TOP} language designed to formally capture the essence of \gls{TOP}} } \newglossaryentry{HASKELL}{% name=Haskell, - description={- a pure lazy \glsxtrlong{FP} language designed by a committe as a concept language} + description={a pure lazy \glsxtrlong{FP} language designed by a committe as a concept language} } \newglossaryentry{HASKELL98}{% name=Haskell98, - description={- a standardised version of \gls{HASKELL}}, + description={a standardised version of \gls{HASKELL}}, } \newglossaryentry{ARDUINO}{% name=Arduino, - description={- a widely used framework for programming microcontrollers} + description={a widely used framework for programming microcontrollers} } \newglossaryentry{MBED}{% name=mbed, - description={- a widely used framework for programming microcontrollers designed for ARM cortex-M} + description={a widely used framework for programming microcontrollers designed for ARM cortex-M} } \newglossaryentry{CPP}{ name=C\texttt{++}, - description={- a general-purpose imperative programming language based on \gls{C}} + description={a general-purpose imperative programming language based on \gls{C}} } \newglossaryentry{C}{ name=C, - description={- a general-purpose imperative programming} -} -\newglossaryentry{I2C}{ - name=I\textsuperscript{2}C, - description={(Inter-Integrated Circuit) {-} a simple serial communication protocol often used to connect sensors to microcontrollers} + description={a general-purpose imperative programming} } \newglossaryentry{WIFI}{ name=Wi-Fi, - description={- is a family of wireless network protocols commonly used for local area networking} -} -\newglossaryentry{SPI}{ - name=SPI, - description={(Serial Peripheral Interface) {-} a synchronous serial communication protocol often used to connect sensors to microcontrollers} + description={is a family of wireless network protocols commonly used for local area networking} } \newglossaryentry{TINYML}{ name=TinyML, - description={- a deep learning framework for microcontrollers} + description={a deep learning framework for microcontrollers} } \newglossaryentry{PYTHON}{ name=Python, - description={- a multi-paradigm interpreted programming language} + description={a multi-paradigm interpreted programming language} } \newglossaryentry{MICROPYTHON}{ name=MicroPython, - description={- a \gls{PYTHON} implementation tailored for microcontrollers} + description={a \gls{PYTHON} implementation tailored for microcontrollers} } \newglossaryentry{FREERTOS}{ name=FreeRTOS, - description={- an open-source \glsxtrshort{RTOS} for microcontrollers} + description={an open-source \glsxtrshort{RTOS} for microcontrollers} } \newglossaryentry{ONEWIRE}{ name=1-wire, - description={- a simple single wire communication protocol often used to connect sensors to microcontrollers} -} -\newglossaryentry{JSON}{ - name=JSON, - description={(JavaScript Object Notation) {-} a open data interchange format using human readable text} -} -\newglossaryentry{MQTT}{ - name=MQTT, - description={(MQ Telemetry Transport) {-} a publish-subscribe network protocol designed for resource constrained devices} + description={a simple single wire communication protocol often used to connect sensors to microcontrollers} } \newglossaryentry{WEMOS}{ name=WEMOS, - description={- a popular ESP8266 microcontroller based prototyping platform supporting \gls{ARDUINO}.} + description={a popular ESP8266 microcontroller based prototyping platform supporting \gls{ARDUINO}.} } diff --git a/preamble/internationalisation.tex b/preamble/internationalisation.tex index d5c0c85..bba16d1 100644 --- a/preamble/internationalisation.tex +++ b/preamble/internationalisation.tex @@ -1,6 +1,3 @@ -\usepackage[dutch,russian,british]{babel} -%\babelfont[russian]{rm}{Liberation Serif} - \hyphenation{ Has-kell qua-si-quo-ter diff --git a/preamble/listings.tex b/preamble/listings.tex index a6b54c3..cdad127 100644 --- a/preamble/listings.tex +++ b/preamble/listings.tex @@ -25,7 +25,7 @@ showtabs=false, stringstyle=\it, tabsize=4, - upquote=true, +% upquote=true, numberstyle=\tiny, } \usepackage{preamble/lstlangclean} diff --git a/preamble/typography.tex b/preamble/typography.tex index 105589c..c8da318 100644 --- a/preamble/typography.tex +++ b/preamble/typography.tex @@ -1,11 +1,6 @@ -\usepackage{lmodern} % Nicer font -\usepackage{microtype} % Better kerning -\usepackage{tipa} % IPA symbols \usepackage{stmaryrd} % short arrows -\usepackage{textcomp} % upquote +%\usepackage{textcomp} % upquote \usepackage{titlecaps} % titlecase commands -\usepackage{amsmath} % extra math -\usepackage{amssymb} % extra math symbols \usepackage{wasysym} % circle symbols \usepackage{relsize} % \smaller command \usepackage{xcolor} % colors @@ -18,4 +13,5 @@ \everymath{\it\/} -\DeclareMathSymbol{\shortminus}{\mathbin}{AMSa}{"39} %chktex 18 +%\DeclareMathSymbol{\shortminus}{\mathbin}{AMSa}{"39} %chktex 18 +\newcommand{\shortminus}{-} diff --git a/thesis.tex b/thesis.tex index ea278e1..071a5a6 100644 --- a/thesis.tex +++ b/thesis.tex @@ -132,7 +132,6 @@ % Glossary \printglossary[style=mcolindex]% -\printglossary[type=\acronymtype,style=mcolindex]% %% Lists of %\cleardoublepage{}