many updates
[phd-thesis.git] / thesis.bib
diff --git a/thesis.bib b/thesis.bib
deleted file mode 100644 (file)
index ffdf65f..0000000
+++ /dev/null
@@ -1,456 +0,0 @@
-@inproceedings{lubbers_multitasking_2019,
-       address = {Opatija, Croatia},
-       title = {Multitasking on {Microcontrollers} using {Task} {Oriented} {Programming}},
-       copyright = {All rights reserved},
-       shorttitle = {Multitasking on {Microcontrollers} using {TOP}},
-       doi = {10.23919/MIPRO.2019.8756711},
-       booktitle = {2019 42nd {International} {Convention} on {Information} and {Communication} {Technology}, {Electronics} and {Microelectronics} ({MIPRO})},
-       author = {Lubbers, M. and Koopman, P. and Plasmeijer, R.},
-       month = may,
-       year = {2019},
-       pages = {1587--1592},
-       file = {08756711.pdf:/home/mrl/.local/share/zotero/storage/4S44JZPK/08756711.pdf:application/pdf;mipro_2019_proceedings.pdf:/home/mrl/.local/share/zotero/storage/5FFJLMTG/mipro_2019_proceedings.pdf:application/pdf;03_4cows_5338.pdf:/home/mrl/.local/share/zotero/storage/3QJTF5HT/03_4cows_5338.pdf:application/pdf}
-}
-
-@inproceedings{lubbers_task_2018,
-       address = {Lowell, MA},
-       title = {Task {Oriented} {Programming} and the {Internet} of {Things}},
-       copyright = {All rights reserved},
-       isbn = {978-1-4503-7143-8},
-       doi = {10.1145/3310232.3310239},
-       abstract = {In the omnipresent Internet of Things (IoT), tiny devices sense and alter the environment, process information and communicate with the world. These devices have limited amounts of processing power and memory. This imposes severe restrictions on their software and communication protocols. As a result, applications are composed of parts written in various programming languages that communicate in many different ways. This impedance mismatch hampers development and maintenance. In previous work we have shown how an IoT device can be programmed by defining an embedded Domain Specific Language (eDSL). In this paper we show how IoT tasks can be seemlessly integrated with a Task Oriented Programming (TOP) server such as iTasks. It allows the specification on a high-level of abstraction of arbitrary collaborations between human beings, large systems, and now also IoT devices. The implementation is made in three steps. First, there is an interface to connect devices dynamically to an iTasks server using various communication protocols. Next, we solve the communication problem between IoT devices and the server by porting Shared Data Sources (SDSs) from TOP. As a result, data can be shared, viewed and updated from the server or IoT device. Finally, we crack the maintenance problem by switching from generating fixed code for the IoT devices to dynamically shipping code. It makes it possible to run multiple tasks on an IoT device and to decide at runtime what tasks that should be.},
-       language = {en},
-       booktitle = {Proceedings of the 30th {Symposium} on the {Implementation} and {Application} of {Functional} {Programming} {Languages}},
-       publisher = {ACM},
-       author = {Lubbers, Mart and Koopman, Pieter and Plasmeijer, Rinus},
-       year = {2018},
-       pages = {83--94},
-       file = {Lubbers et al. - 2018 - Task Oriented Programming and the Internet of Thin.pdf:/home/mrl/.local/share/zotero/storage/3E5KLI5V/Lubbers et al. - 2018 - Task Oriented Programming and the Internet of Thin.pdf:application/pdf}
-}
-
-@mastersthesis{lubbers_task_2017,
-       address = {Nijmegen},
-       title = {Task {Oriented} {Programming} and the {Internet} of {Things}},
-       copyright = {All rights reserved},
-       shorttitle = {{TOP} and the {IoT}},
-       school = {Radboud University},
-       author = {Lubbers, Mart},
-       year = {2017},
-       file = {thesis.pdf:/home/mrl/.local/share/zotero/storage/M49MWHPX/thesis.pdf:application/pdf}
-}
-
-@incollection{lubbers_writing_2019,
-       address = {Cham},
-       title = {Writing {Internet} of {Things} applications with {Task} {Oriented} {Programming}},
-       abstract = {The Internet of Things (IOT) is growing fast. In 2018, there was approximately one connected device per person on earth and the number has been growing ever since. The devices interact with the environment via different modalities at the same time using sensors and actuators making the programs parallel. Yet, writing this type of programs is difficult because the devices have little computation power and memory, the platforms are heterogeneous and the languages are low level. Task Oriented Programming (TOP) is a novel declarative programming language paradigm that is used to express coordination of work, collaboration of users and systems, the distribution of shared data and the human computer interaction. The mTask language is a specialized, yet full-fledged, multi-backend TOP language for IOT devices. With the bytecode interpretation backend and the integration with iTasks, tasks can be executed on the device dynamically. This means that —according to the current state of affairs— tasks can be tailor-made at run time, compiled to device-agnostic bytecode and shipped to the device for interpretation. Tasks sent to the device are fully integrated in iTasks to allow every form of interaction with the tasks such as observation of the task value and interaction with Shared Data Sources (SDSs). The application is —server and devices— are programmed in a single language, albeit using two embedded Domain Specific Languages (EDSLs).},
-       language = {en},
-       booktitle = {Central {European} {Functional} {Programming} {School}: 8th {Summer} {School}, {CEFP} 2019, {Budapest}, {Hungary}, {July} 17–21, 2019, {Revised} {Selected} {Papers}},
-       publisher = {Springer International Publishing},
-       author = {Lubbers, Mart and Koopman, Pieter and Plasmeijer, Rinus},
-       year = {2019},
-       pages = {51},
-       file = {Lubbers - Writing Internet of Things applications with Task .pdf:/home/mrl/.local/share/zotero/storage/ILZIBYW5/Lubbers - Writing Internet of Things applications with Task .pdf:application/pdf}
-}
-
-@inproceedings{lubbers_interpreting_2019,
-       address = {Singapore},
-       title = {Interpreting {Task} {Oriented} {Programs} on {Tiny} {Computers}},
-       copyright = {All rights reserved},
-       language = {en},
-       booktitle = {Proceedings of the 31th {Symposium} on the {Implementation} and {Application} of {Functional} {Programming} {Languages}},
-       publisher = {ACM},
-       author = {Lubbers, Mart and Koopman, Pieter and Plasmeijer, Rinus},
-       year = {2019},
-       pages = {12},
-       file = {pre-conference-proceedings.pdf:/home/mrl/.local/share/zotero/storage/E4R53TGR/pre-conference-proceedings.pdf:application/pdf;Lubbers et al. - 2020 - Interpreting Task Oriented Programs on Tiny Comput.pdf:/home/mrl/.local/share/zotero/storage/8QXYMUIX/Lubbers et al. - 2020 - Interpreting Task Oriented Programs on Tiny Comput.pdf:application/pdf}
-}
-
-@inproceedings{koopman_task-based_2018,
-       address = {Vienna, Austria},
-       title = {A {Task}-{Based} {DSL} for {Microcomputers}},
-       copyright = {All rights reserved},
-       isbn = {978-1-4503-6355-6},
-       url = {http://dl.acm.org/citation.cfm?doid=3183895.3183902},
-       doi = {10.1145/3183895.3183902},
-       abstract = {The Internet of Things, IoT, makes small connected computing devices almost omnipresent. These devices have typically very limited computing power and severe memory restrictions to make them cheap and power efficient. These devices can interact with the environment via special sensors and actuators. Since each device controls several peripherals running interleaved, the control software is quite complicated and hard to maintain. Task Oriented Programming, TOP, offers lightweight communicating threads that can inspect each other’s intermediate results. This makes it well suited for the IoT. In this paper presents a functional task-based domain specific language for these IoT devices. We show that it yields concise control programs. By restricting the datatypes and using strict evaluation these programs fit within the restrictions of microcontrollers.},
-       language = {en},
-       urldate = {2019-01-14},
-       booktitle = {Proceedings of the {Real} {World} {Domain} {Specific} {Languages} {Workshop} 2018 on   - {RWDSL2018}},
-       publisher = {ACM Press},
-       author = {Koopman, Pieter and Lubbers, Mart and Plasmeijer, Rinus},
-       year = {2018},
-       pages = {1--11},
-       file = {a4-Koopman.pdf:/home/mrl/.local/share/zotero/storage/TXZD529C/a4-Koopman.pdf:application/pdf;Koopman et al. - 2018 - A Task-Based DSL for Microcomputers.pdf:/home/mrl/.local/share/zotero/storage/9ETMTMX2/Koopman et al. - 2018 - A Task-Based DSL for Microcomputers.pdf:application/pdf}
-}
-
-@inproceedings{lubbers_tiered_2020,
-       address = {Malmö},
-       series = {{IoT} '20},
-       title = {Tiered versus {Tierless} {IoT} {Stacks}: {Comparing} {Smart} {Campus} {Software} {Architectures}},
-       isbn = {978-1-4503-8758-3},
-       url = {https://doi.org/10.1145/3410992.3411002},
-       doi = {10.1145/3410992.3411002},
-       abstract = {Internet of Things (IoT) software stacks are notoriously complex, conventionally comprising multiple tiers/components and requiring that the developer not only uses multiple programming languages, but also correctly interoperate the components. A novel alternative is to use a single tierless language with a compiler that generates the code for each component, and for their correct interoperation.We report the first ever systematic comparison of tiered and tierless IoT software architectures. The comparison is based on two implementations of a non-trivial smart campus application. PRSS has a conventional tiered Python-based architecture, and Clean Wemos Super Sensors (CWSS) has a novel tierless architecture based on Clean and the iTask and mTask embedded DSLs. An operational comparison of CWSS and PRSS demonstrates that they have equivalent functionality, and that both meet the University of Glasgow (UoG) smart campus requirements.Crucially, the tierless CWSS stack requires 70\% less code than the tiered PRSS stack. We analyse the impact of the following three main factors. (1) Tierless developers need to manage less interoperation: CWSS uses two DSLs in a single paradigm where PRSS uses five languages and three paradigms. (2) Tierless developers benefit from automatically generated, and hence correct, communication. (3) Tierless developers can exploit the powerful high-level abstractions such as Task Oriented Programming (TOP) in CWSS. A far smaller and single paradigm codebase improves software quality, dramatically reduces development time, and improves the maintainability of tierless stacks.},
-       booktitle = {Proceedings of the 10th {International} {Conference} on the {Internet} of {Things}},
-       publisher = {Association for Computing Machinery},
-       author = {Lubbers, Mart and Koopman, Pieter and Ramsingh, Adrian and Singer, Jeremy and Trinder, Phil},
-       year = {2020},
-       note = {event-place: Malmö, Sweden},
-       keywords = {domain specific languages, internet of things, network reliability, software architectures},
-       file = {Lubbers et al. - 2020 - Tiered versus Tierless IoT Stacks Comparing Smart.pdf:/home/mrl/.local/share/zotero/storage/YY3MJRZ6/Lubbers et al. - 2020 - Tiered versus Tierless IoT Stacks Comparing Smart.pdf:application/pdf}
-}
-
-@misc{achten_clean_2007,
-       title = {Clean for {Haskell98} {Programmers}},
-       language = {en},
-       author = {Achten, Peter},
-       month = jul,
-       year = {2007},
-       file = {Achten - Clean for Haskell98 Programmers.pdf:/home/mrl/.local/share/zotero/storage/69WWSGLF/Achten - Clean for Haskell98 Programmers.pdf:application/pdf},
-}
-
-@article{groningen_exchanging_2010,
-       title = {Exchanging sources between {Clean} and {Haskell}: {A} double-edged front end for the {Clean} compiler},
-       volume = {45},
-       shorttitle = {Exchanging sources between {Clean} and {Haskell}},
-       number = {11},
-       journal = {ACM Sigplan Notices},
-       author = {Groningen, John van and Noort, Thomas van and Achten, Peter and Koopman, Pieter and Plasmeijer, Rinus},
-       year = {2010},
-       pages = {49--60},
-       file = {groj10-Haskell_front_end_Clean.pdf:/home/mrl/.local/share/zotero/storage/WVZWX8WT/groj10-Haskell_front_end_Clean.pdf:application/pdf},
-}
-
-@techreport{plasmeijer_clean_2021,
-       address = {Nijmegen},
-       title = {Clean {Language} {Report} version 3.1},
-       urldate = {2021-12-22},
-       institution = {Institute for Computing and Information Sciences},
-       author = {Plasmeijer, Rinus and van Eekelen, Marko and van Groningen, John},
-       month = dec,
-       year = {2021},
-       pages = {127},
-       file = {CleanLanguageReport.pdf:/home/mrl/.local/share/zotero/storage/I2SDRIH6/CleanLanguageReport.pdf:application/pdf},
-}
-
-@inproceedings{brus_clean_1987,
-       address = {Berlin, Heidelberg},
-       title = {Clean — {A} language for functional graph rewriting},
-       isbn = {978-3-540-47879-9},
-       abstract = {Clean is an experimental language for specifying functional computations in terms of graph rewriting. It is based on an extension of Term Rewriting Systems (TRS) in which the terms are replaced by graphs. Such a Graph Rewriting System (GRS) consists of a, possibly cyclic, directed graph, called the data graph and graph rewrite rules which specify how this data graph may be rewritten. Clean is designed to provide a firm base for functional programming. In particular, Clean is suitable as an intermediate language between functional languages and (parallel) target machine architectures. A sequential implementation of Clean on a conventional machine is described and its performance is compared with other systems. The results show that Clean can be efficiently implemented.},
-       booktitle = {Functional {Programming} {Languages} and {Computer} {Architecture}},
-       publisher = {Springer Berlin Heidelberg},
-       author = {Brus, T. H. and van Eekelen, M. C. J. D. and van Leer, M. O. and Plasmeijer, M. J.},
-       editor = {Kahn, Gilles},
-       year = {1987},
-       pages = {364--384},
-       file = {brut87-Clean.ps.gz:/home/mrl/.local/share/zotero/storage/T2QATWIE/brut87-Clean.ps.gz:application/gzip},
-}
-
-@inproceedings{barendregt_towards_1987,
-       title = {Towards an intermediate language for graph rewriting},
-       volume = {1},
-       booktitle = {{PARLE}, {Parallel} {Architectures} and {Languages} {Europe}},
-       publisher = {Springer Verlag},
-       author = {Barendregt, HP and van Eekelen, MCJD and Glauert, JRW and Kennaway, JR and Plasmeijer, MJ and Sleep, MR},
-       year = {1987},
-       pages = {159--174},
-       file = {barh87-Lean.ps.gz:/home/mrl/.local/share/zotero/storage/63FBHND7/barh87-Lean.ps.gz:application/gzip},
-}
-
-@inproceedings{nocker_concurrent_1991,
-       address = {Berlin, Heidelberg},
-       title = {Concurrent clean},
-       isbn = {978-3-540-47472-2},
-       abstract = {Concurrent Clean is an experimental, lazy, higher-order parallel functional programming language based on term graph rewriting. An important difference with other languages is that in Clean graphs are manipulated and not terms. This can be used by the programmer to control communication and sharing of computation. Cyclic structures can be defined. Concurrent Clean furthermore allows to control the (parallel) order of evaluation to make efficient evaluation possible. With help of sequential annotations the default lazy evaluation can be locally changed into eager evaluation. The language enables the definition of partially strict data structures which make a whole new class of algorithms feasible in a functional language. A powerful and fast strictness analyser is incorporated in the system. The quality of the code generated by the Clean compiler has been greatly improved such that it is one of the best code generators for a lazy functional language. Two very powerful parallel annotations enable the programmer to define concurrent functional programs with arbitrary process topologies. Concurrent Clean is set up in such a way that the efficiency achieved for the sequential case can largely be maintained for a parallel implementation on loosely coupled parallel machine architectures.},
-       booktitle = {{PARLE} '91 {Parallel} {Architectures} and {Languages} {Europe}},
-       publisher = {Springer Berlin Heidelberg},
-       author = {Nöcker, E. G. J. M. H. and Smetsers, J. E. W. and van Eekelen, M. C. J. D. and Plasmeijer, M. J.},
-       editor = {Aarts, Emile H. L. and van Leeuwen, Jan and Rem, Martin},
-       year = {1991},
-       pages = {202--219},
-       file = {Nöcker et al. - 1991 - Concurrent clean.pdf:/home/mrl/.local/share/zotero/storage/XHTNR7BR/Nöcker et al. - 1991 - Concurrent clean.pdf:application/pdf},
-}
-
-@phdthesis{alimarine_generic_2005,
-       address = {Nijmegen},
-       type = {{PhD}},
-       title = {Generic {Functional} {Programming}},
-       language = {en},
-       school = {Radboud University},
-       author = {Alimarine, Artem},
-       year = {2005},
-       file = {Alimarine - Generic Functional Programming.pdf:/home/mrl/.local/share/zotero/storage/PDTS3SGX/Alimarine - Generic Functional Programming.pdf:application/pdf},
-}
-
-@misc{ghc_team_ghc_2021,
-       title = {{GHC} {User}’s {Guide} {Documentation}},
-       url = {https://downloads.haskell.org/~ghc/latest/docs/users_guide.pdf},
-       language = {English},
-       urldate = {2021-02-24},
-       publisher = {Release},
-       author = {GHC Team},
-       year = {2021},
-}
-
-@inproceedings{cheney_lightweight_2002,
-       title = {A lightweight implementation of generics and dynamics},
-       url = {http://dl.acm.org/citation.cfm?id=581698},
-       urldate = {2017-05-15},
-       booktitle = {Proceedings of the 2002 {ACM} {SIGPLAN} workshop on {Haskell}},
-       publisher = {ACM},
-       author = {Cheney, James and Hinze, Ralf},
-       year = {2002},
-       keywords = {dynamic typing, generic programming, type representations},
-       pages = {90--104},
-       file = {Cheney and Hinze - 2002 - A lightweight implementation of generics and dynam.pdf:/home/mrl/.local/share/zotero/storage/FZ6EGJRJ/Cheney and Hinze - 2002 - A lightweight implementation of generics and dynam.pdf:application/pdf;HW02.pdf:/home/mrl/.local/share/zotero/storage/A8Z49NK6/HW02.pdf:application/pdf},
-}
-
-@incollection{hinze_fun_2003,
-       address = {Palgrave},
-       series = {Cornerstones of {Computing}},
-       title = {Fun {With} {Phantom} {Types}},
-       isbn = {978-0-333-99285-2},
-       booktitle = {The {Fun} of {Programming}},
-       publisher = {Bloomsbury Publishing},
-       author = {Hinze, Ralf},
-       editor = {Gibbons, Jeremy and de Moor, Oege},
-       year = {2003},
-       pages = {245--262},
-}
-
-@inproceedings{jeuring_polytypic_1996,
-       address = {Berlin, Heidelberg},
-       title = {Polytypic programming},
-       isbn = {978-3-540-70639-7},
-       abstract = {Many functions have to be written over and over again for different datatypes, either because datatypes change during the development of programs, or because functions with similar functionality are needed on different datatypes. Examples of such functions are pretty printers, debuggers, equality functions, unifiers, pattern matchers, rewriting functions, etc. Such functions are called polytypic functions. A polytypic function is a function that is defined by induction on the structure of user-defined datatypes. This paper introduces polytypic functions, and shows how to construct and reason about polytypic functions. A larger example is studied in detail: polytypic functions for term rewriting and for determining whether a collection of rewrite rules is normalising.},
-       booktitle = {Advanced {Functional} {Programming}},
-       publisher = {Springer Berlin Heidelberg},
-       author = {Jeuring, Johan and Jansson, Patrik},
-       editor = {Launchbury, John and Meijer, Erik and Sheard, Tim},
-       year = {1996},
-       pages = {68--114},
-       file = {Jeuring and Jansson - 1996 - Polytypic programming.pdf:/home/mrl/.local/share/zotero/storage/SLC4G2IT/Jeuring and Jansson - 1996 - Polytypic programming.pdf:application/pdf},
-}
-@techreport{cheney_first-class_2003,
-       title = {First-class phantom types},
-       url = {https://ecommons.cornell.edu/handle/1813/5614},
-       urldate = {2017-05-15},
-       institution = {Cornell University},
-       author = {Cheney, James and Hinze, Ralf},
-       year = {2003},
-       file = {https\://ecommons.cornell.edu/bitstream/handle/1813/5614/?sequence=1:/home/mrl/.local/share/zotero/storage/R5IFMHTP/5614.pdf:application/pdf}
-}
-@incollection{mernik_extensible_2013,
-       address = {Hershey, PA, USA},
-       title = {Extensible {Languages}: {Blurring} the {Distinction} between {DSL} and {GPL}},
-       isbn = {978-1-4666-2092-6},
-       url = {https://services.igi-global.com/resolvedoi/resolve.aspx?doi=10.4018/978-1-4666-2092-6.ch001},
-       abstract = {Out of a concern for focus and concision, domain-specific languages (DSLs) are usually very different from general purpose programming languages (GPLs), both at the syntactic and the semantic levels. One approach to DSL implementation is to write a full language infrastructure, including parser, interpreter, or even compiler. Another approach however, is to ground the DSL into an extensible GPL, giving you control over its own syntax and semantics. The DSL may then be designed merely as an extension to the original GPL, and its implementation may boil down to expressing only the differences with it. The task of DSL implementation is hence considerably eased. The purpose of this chapter is to provide a tour of the features that make a GPL extensible, and to demonstrate how, in this context, the distinction between DSL and GPL can blur, sometimes to the point of complete disappearance.},
-       booktitle = {Formal and {Practical} {Aspects} of {Domain}-{Specific} {Languages}: {Recent} {Developments}},
-       publisher = {IGI Global},
-       author = {Verna, Didier},
-       editor = {Mernik, Marjan},
-       year = {2013},
-       doi = {10.4018/978-1-4666-2092-6.ch001},
-       pages = {1--31},
-}
-
-@article{tratt_domain_2008,
-       title = {Domain {Specific} {Language} {Implementation} via {Compile}-{Time} {Meta}-{Programming}},
-       volume = {30},
-       issn = {0164-0925},
-       url = {https://doi.org/10.1145/1391956.1391958},
-       doi = {10.1145/1391956.1391958},
-       abstract = {Domain specific languages (DSLs) are mini-languages that are increasingly seen as being a valuable tool for software developers and non-developers alike. DSLs must currently be created in an ad-hoc fashion, often leading to high development costs and implementations of variable quality. In this article, I show how expressive DSLs can be hygienically embedded in the Converge programming language using its compile-time meta-programming facility, the concept of DSL blocks, and specialised error reporting techniques. By making use of pre-existing facilities, and following a simple methodology, DSL implementation costs can be significantly reduced whilst leading to higher quality DSL implementations.},
-       number = {6},
-       journal = {ACM Trans. Program. Lang. Syst.},
-       author = {Tratt, Laurence},
-       month = oct,
-       year = {2008},
-       note = {Place: New York, NY, USA
-Publisher: Association for Computing Machinery},
-       keywords = {compile-time meta-programming, domain specific languages, Syntax extension},
-       file = {Tratt - 2008 - Domain Specific Language Implementation via Compil.pdf:/home/mrl/.local/share/zotero/storage/HHGYJK4H/Tratt - 2008 - Domain Specific Language Implementation via Compil.pdf:application/pdf},
-}
-
-@inproceedings{sheard_accomplishments_2001,
-       address = {Berlin, Heidelberg},
-       title = {Accomplishments and {Research} {Challenges} in {Meta}-programming},
-       isbn = {978-3-540-44806-8},
-       abstract = {In the last ten years the study of meta-programming systems, as formal systems worthy of study in their own right, has vastly accelerated. In that time a lot has been accomplished, yet much remains to be done. In this invited talk I wish to review recent accomplishments and future research challenges in hopes that this will spur interest in meta-programming in general and lead to new and better meta-programming systems.},
-       booktitle = {Semantics, {Applications}, and {Implementation} of {Program} {Generation}},
-       publisher = {Springer Berlin Heidelberg},
-       author = {Sheard, Tim},
-       editor = {Taha, Walid},
-       year = {2001},
-       pages = {2--44},
-       file = {Sheard - 2001 - Accomplishments and Research Challenges in Meta-pr.pdf:/home/mrl/.local/share/zotero/storage/M7NT6USA/Sheard - 2001 - Accomplishments and Research Challenges in Meta-pr.pdf:application/pdf},
-}
-
-@incollection{gibbons_functional_2015,
-       address = {Cham},
-       title = {Functional {Programming} for {Domain}-{Specific} {Languages}},
-       isbn = {978-3-319-15940-9},
-       url = {https://doi.org/10.1007/978-3-319-15940-9_1},
-       abstract = {Domain-specific languages are a popular application area for functional programming; and conversely, functional programming is a popular implementation vehicle for domain-specific languages—at least, for embedded ones. Why is this? The appeal of embedded domain-specific languages is greatly enhanced by the presence of convenient lightweight tools for defining, implementing, and optimising new languages; such tools represent one of functional programming's strengths. In these lectures we discuss functional programming techniques for embedded domain-specific languages; we focus especially on algebraic datatypes and higher-order functions, and their influence on deep and shallow embeddings.},
-       booktitle = {Central {European} {Functional} {Programming} {School}: 5th {Summer} {School}, {CEFP} 2013, {Cluj}-{Napoca}, {Romania}, {July} 8-20, 2013, {Revised} {Selected} {Papers}},
-       publisher = {Springer International Publishing},
-       author = {Gibbons, Jeremy},
-       editor = {Zsók, Viktória and Horváth, Zoltán and Csató, Lehel},
-       year = {2015},
-       doi = {10.1007/978-3-319-15940-9_1},
-       pages = {1--28},
-       file = {Gibbons - 2015 - Functional Programming for Domain-Specific Languag.pdf:/home/mrl/.local/share/zotero/storage/ARUBLFU6/Gibbons - 2015 - Functional Programming for Domain-Specific Languag.pdf:application/pdf},
-}
-
-@article{elliott_compiling_2003,
-       title = {Compiling embedded languages},
-       volume = {13},
-       doi = {10.1017/S0956796802004574},
-       number = {3},
-       journal = {Journal of Functional Programming},
-       author = {Elliott, Conal and Finne, Sigbjørn and de Moor, Oege},
-       year = {2003},
-       note = {Publisher: Cambridge University Press},
-       pages = {455--481},
-       file = {Elliott et al. - 2003 - Compiling embedded languages.pdf:/home/mrl/.local/share/zotero/storage/3X4Z6AKB/Elliott et al. - 2003 - Compiling embedded languages.pdf:application/pdf},
-}
-
-@inproceedings{hudak_modular_1998,
-       title = {Modular domain specific languages and tools},
-       doi = {10.1109/ICSR.1998.685738},
-       booktitle = {Proceedings. {Fifth} {International} {Conference} on {Software} {Reuse} ({Cat}. {No}.{98TB100203})},
-       author = {Hudak, P.},
-       year = {1998},
-       pages = {134--142},
-       file = {Hudak - 1998 - Modular domain specific languages and tools.pdf:/home/mrl/.local/share/zotero/storage/JX7KZ2ST/Hudak - 1998 - Modular domain specific languages and tools.pdf:application/pdf},
-}
-
-@inproceedings{baccelli_reprogramming_2018,
-       title = {Reprogramming {Low}-end {IoT} {Devices} from the {Cloud}},
-       booktitle = {2018 3rd {Cloudification} of the {Internet} of {Things} ({CIoT})},
-       publisher = {IEEE},
-       author = {Baccelli, Emmanuel and Doerr, Joerg and Jallouli, Ons and Kikuchi, Shinji and Morgenstern, Andreas and Padilla, Francisco Acosta and Schleiser, Kaspar and Thomas, Ian},
-       year = {2018},
-       pages = {1--6},
-       file = {Baccelli et al. - 2018 - Reprogramming Low-end IoT Devices from the Cloud.pdf:/home/mrl/.local/share/zotero/storage/M6LX5ZJN/Baccelli et al. - 2018 - Reprogramming Low-end IoT Devices from the Cloud.pdf:application/pdf},
-}
-
-@inproceedings{baccelli_scripting_2018,
-       title = {Scripting {Over}-{The}-{Air}: {Towards} {Containers} on {Low}-end {Devices} in the {Internet} of {Things}},
-       booktitle = {{IEEE} {PerCom} 2018},
-       author = {Baccelli, Emmanuel and Doerr, Joerg and Kikuchi, Shinji and Padilla, Francisco and Schleiser, Kaspar and Thomas, Ian},
-       year = {2018},
-       file = {Baccelli et al. - Scripting Over-The-Air Towards Containers on Low-.pdf:/home/mrl/.local/share/zotero/storage/98UTMFAC/Baccelli et al. - Scripting Over-The-Air Towards Containers on Low-.pdf:application/pdf},
-}
-
-@inproceedings{plasmeijer_task-oriented_2012,
-       address = {New York, NY, USA},
-       series = {{PPDP} '12},
-       title = {Task-{Oriented} {Programming} in a {Pure} {Functional} {Language}},
-       isbn = {978-1-4503-1522-7},
-       url = {https://doi.org/10.1145/2370776.2370801},
-       doi = {10.1145/2370776.2370801},
-       abstract = {Task-Oriented Programming (TOP) is a novel programming paradigm for the construction of distributed systems where users work together on the internet. When multiple users collaborate, they need to interact with each other frequently. TOP supports the definition of tasks that react to the progress made by others. With TOP, complex multi-user interactions can be programmed in a declarative style just by defining the tasks that have to be accomplished, thus eliminating the need to worry about the implementation detail that commonly frustrates the development of applications for this domain. TOP builds on four core concepts: tasks that represent computations or work to do which have an observable value that may change over time, data sharing enabling tasks to observe each other while the work is in progress, generic type driven generation of user interaction, and special combinators for sequential and parallel task composition. The semantics of these core concepts is defined in this paper. As an example we present the iTask3 framework, which embeds TOP in the functional programming language Clean.},
-       booktitle = {Proceedings of the 14th {Symposium} on {Principles} and {Practice} of {Declarative} {Programming}},
-       publisher = {Association for Computing Machinery},
-       author = {Plasmeijer, Rinus and Lijnse, Bas and Michels, Steffen and Achten, Peter and Koopman, Pieter},
-       year = {2012},
-       note = {event-place: Leuven, Belgium},
-       keywords = {clean, task-oriented programming},
-       pages = {195--206},
-       file = {103802.pdf:/home/mrl/.local/share/zotero/storage/ZE6A65AW/103802.pdf:application/pdf},
-}
-
-@incollection{wang_maintaining_2018,
-       address = {Cham},
-       title = {Maintaining {Separation} of {Concerns} {Through} {Task} {Oriented} {Software} {Development}},
-       volume = {10788},
-       isbn = {978-3-319-89718-9 978-3-319-89719-6},
-       url = {http://link.springer.com/10.1007/978-3-319-89719-6_2},
-       abstract = {Task Oriented Programming is a programming paradigm that enhances ‘classic’ functional programming with means to express the coordination of work among people and computer systems, the distribution and control of data sources, and the human-machine interfaces. To make the creation process of such applications feasible, it is important to have separation of concerns. In this paper we demonstrate how this is achieved within the Task Oriented Software Development process and illustrate the approach by means of a case study.},
-       language = {en},
-       urldate = {2019-01-14},
-       booktitle = {Trends in {Functional} {Programming}},
-       publisher = {Springer International Publishing},
-       author = {Stutterheim, Jurriën and Achten, Peter and Plasmeijer, Rinus},
-       editor = {Wang, Meng and Owens, Scott},
-       year = {2018},
-       doi = {10.1007/978-3-319-89719-6},
-       pages = {19--38},
-       file = {Stutterheim et al. - 2018 - Maintaining Separation of Concerns Through Task Or.pdf:/home/mrl/.local/share/zotero/storage/4GXJEM2U/Stutterheim et al. - 2018 - Maintaining Separation of Concerns Through Task Or.pdf:application/pdf},
-}
-
-@book{fowler_domain_2010,
-       edition = {1st},
-       title = {Domain {Specific} {Languages}},
-       isbn = {0-321-71294-3},
-       abstract = {Designed as a wide-ranging guide to Domain Specific Languages (DSLs) and how to approach building them, this book covers a variety of different techniques available for DSLs. The goal is to provide readers with enough information to make an informed choice about whether or not to use a DSL and what kinds of DSL techniques to employ. Part I is a 150-page narrative overview that gives you a broad understanding of general principles. The reference material in Parts II through VI provides the details and examples you willneed to get started using the various techniques discussed. Both internal and external DSL topics are covered, in addition to alternative computational models and code generation. Although the general principles and patterns presented can be used with whatever programming language you happen to be using, most of the examples are in Java or C\#.},
-       publisher = {Addison-Wesley Professional},
-       author = {Fowler, Martin},
-       year = {2010},
-       file = {Fowler - 2010 - Domain-specific languages.pdf:/home/mrl/.local/share/zotero/storage/YYMYXTZ5/Fowler - 2010 - Domain-specific languages.pdf:application/pdf},
-}
-
-@misc{peter_t_lewis_speech_1985,
-       address = {Washington, D.C.},
-       type = {Speech},
-       title = {Speech},
-       url = {http://www.chetansharma.com/correcting-the-iot-history/},
-       author = {{Peter T. Lewis}},
-       month = sep,
-       year = {1985},
-}
-
-@article{weiser_computer_1991,
-       title = {The {Computer} for the 21 st {Century}},
-       volume = {265},
-       language = {en},
-       number = {3},
-       journal = {Scientific American},
-       author = {Weiser, Mark},
-       month = sep,
-       year = {1991},
-       pages = {94--105},
-       file = {Weiser - 1991 - The Computer for the 21 st Century.pdf:/home/mrl/.local/share/zotero/storage/N5456M2M/Weiser - 1991 - The Computer for the 21 st Century.pdf:application/pdf},
-}
-
-@misc{evans_internet_2011,
-       title = {The {Internet} of {Things}: {How} the {Next} {Evolution} of the {Internet} {Is} {Changing} {Everything}},
-       url = {https://www.cisco.com/c/dam/en_us/about/ac79/docs/innov/IoT_IBSG_0411FINAL.pdf},
-       language = {en},
-       publisher = {Cisco Internet Business Solutions Group (IBSG)},
-       author = {Evans, Dave},
-       month = apr,
-       year = {2011},
-       file = {Evans - 2011 - How the Next Evolution of the Internet Is Changing.pdf:/home/mrl/.local/share/zotero/storage/32YXCM6P/Evans - 2011 - How the Next Evolution of the Internet Is Changing.pdf:application/pdf},
-}
-
-@inproceedings{ireland_classification_2009,
-       address = {Cancun, Mexico},
-       title = {A {Classification} of {Object}-{Relational} {Impedance} {Mismatch}},
-       isbn = {978-0-7695-3550-0},
-       doi = {10.1109/DBKDA.2009.11},
-       booktitle = {First {International} {Conference} on {Advances} in {Databases}, {Knowledge}, and {Data} {Applications}},
-       publisher = {IEEE},
-       author = {Ireland, Christopher and Bowers, David and Newton, Michael and Waugh, Kevin},
-       year = {2009},
-       pages = {36--43},
-}
-
-@incollection{hinze_generic_2003,
-       address = {Berlin, Heidelberg},
-       title = {Generic {Haskell}: {Practice} and {Theory}},
-       isbn = {978-3-540-45191-4},
-       url = {https://doi.org/10.1007/978-3-540-45191-4_1},
-       abstract = {Generic Haskell is an extension of Haskell that supports the construction of generic programs. These lecture notes describe the basic constructs of Generic Haskell and highlight the underlying theory.},
-       booktitle = {Generic {Programming}: {Advanced} {Lectures}},
-       publisher = {Springer Berlin Heidelberg},
-       author = {Hinze, Ralf and Jeuring, Johan},
-       editor = {Backhouse, Roland and Gibbons, Jeremy},
-       year = {2003},
-       doi = {10.1007/978-3-540-45191-4_1},
-       pages = {1--56},
-       file = {Hinze and Jeuring - Generic Haskell practice and theory.pdf:/home/mrl/.local/share/zotero/storage/QDRNI5VB/Hinze and Jeuring - Generic Haskell practice and theory.pdf:application/pdf},
-}