b2fcf59ccabcd2d38b3ff78ea9e391313457af59
[phd-thesis.git] / bib / other.bib
1
2 @inproceedings{suchocki_microscheme:_2015,
3 location = {Washington {DC}, {USA}},
4 title = {Microscheme: Functional programming for the Arduino},
5 series = {{CS} Techreport 718},
6 eventtitle = {Scheme and Functional Programming Workshop},
7 pages = {9},
8 booktitle = {Proceedings of the 2014 Scheme and Functional Programming Workshop},
9 publisher = {University of Indiana},
10 author = {Suchocki, Ryan and Kalvala, Sara},
11 date = {2015},
12 file = {Suchocki and Kalvala - 2015 - Microscheme Functional programming for the Arduin.pdf:/home/mrl/.local/share/zotero/storage/DDQZ9LP7/Suchocki and Kalvala - 2015 - Microscheme Functional programming for the Arduin.pdf:application/pdf},
13 }
14
15 @thesis{crooijmans_reducing_2021,
16 location = {Nijmegen},
17 title = {Reducing the Power Consumption of {IoT} Devices in Task-Oriented Programming},
18 pagetotal = {78},
19 institution = {Radboud University},
20 type = {Master's Thesis},
21 author = {Crooijmans, Sjoerd},
22 date = {2021-07},
23 langid = {english},
24 file = {Crooijmans - 2021 - Reducing the Power Consumption of IoT Devices in T.pdf:/home/mrl/.local/share/zotero/storage/98LY9YHH/Crooijmans - 2021 - Reducing the Power Consumption of IoT Devices in T.pdf:application/pdf},
25 }
26
27 @inproceedings{plasmeijer_task-oriented_2012,
28 location = {New York, {NY}, {USA}},
29 title = {Task-Oriented Programming in a Pure Functional Language},
30 isbn = {978-1-4503-1522-7},
31 doi = {10.1145/2370776.2370801},
32 series = {{PPDP} '12},
33 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 {iTask}3 framework, which embeds {TOP} in the functional programming language Clean.},
34 pages = {195--206},
35 booktitle = {Proceedings of the 14th Symposium on Principles and Practice of Declarative Programming},
36 publisher = {{ACM}},
37 author = {Plasmeijer, Rinus and Lijnse, Bas and Michels, Steffen and Achten, Peter and Koopman, Pieter},
38 date = {2012},
39 note = {event-place: Leuven, Belgium},
40 keywords = {clean, task-oriented programming},
41 file = {103802.pdf:/home/mrl/.local/share/zotero/storage/ZE6A65AW/103802.pdf:application/pdf},
42 }
43
44 @inproceedings{brus_clean_1987,
45 location = {Berlin, Heidelberg},
46 title = {Clean — A language for functional graph rewriting},
47 isbn = {978-3-540-47879-9},
48 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.},
49 pages = {364--384},
50 booktitle = {Functional Programming Languages and Computer Architecture},
51 publisher = {Springer Berlin Heidelberg},
52 author = {Brus, T. H. and van Eekelen, M. C. J. D. and van Leer, M. O. and Plasmeijer, M. J.},
53 editor = {Kahn, Gilles},
54 date = {1987},
55 file = {brut87-Clean.ps.gz:/home/mrl/.local/share/zotero/storage/T2QATWIE/brut87-Clean.ps.gz:application/gzip},
56 }
57
58 @online{bolingbroke_constraint_2011,
59 title = {Constraint Kinds for {GHC}},
60 url = {http://blog.omega-prime.co.uk/2011/09/10/constraint-kinds-for-ghc/},
61 titleaddon = {:: (Bloggable a) ={\textgreater} a -{\textgreater} {IO} ()},
62 author = {Bolingbroke, Max},
63 urldate = {2021-06-09},
64 date = {2011-09-10},
65 file = {Constraint Kinds for GHC:/home/mrl/.local/share/zotero/storage/R6RL79K7/constraint-kinds-for-ghc.html:text/html},
66 }
67
68 @inproceedings{fegaras_revisiting_1996,
69 location = {New York, {NY}, {USA}},
70 title = {Revisiting Catamorphisms over Datatypes with Embedded Functions (or, Programs from Outer Space)},
71 isbn = {0-89791-769-3},
72 doi = {10.1145/237721.237792},
73 series = {{POPL} '96},
74 abstract = {We revisit the work of Paterson and of Meijer \& Hutton, which describes how to construct catamorphisms for recursive datatype definitions that embed contravariant occurrences of the type being defined. Their construction requires, for each catamorphism, the definition of an anamorphism that has an inverse-like relationship to that catamorphism. We present an alternative construction, which replaces the stringent requirement that an inverse anamorphism be defined for each catamorphism with a more lenient restriction. The resulting construction has a more efficient implementation than that of Paterson, Meijer, and Hutton and the relevant restriction can be enforced by a Hindley-Milner type inference algorithm. We provide numerous examples illustrating our method.},
75 pages = {284--294},
76 booktitle = {Proceedings of the 23rd {ACM} {SIGPLAN}-{SIGACT} Symposium on Principles of Programming Languages},
77 publisher = {{ACM}},
78 author = {Fegaras, Leonidas and Sheard, Tim},
79 date = {1996},
80 note = {event-place: St. Petersburg Beach, Florida, {USA}},
81 file = {Fegaras and Sheard - 1996 - Revisiting Catamorphisms over Datatypes with Embed.pdf:/home/mrl/.local/share/zotero/storage/WCSRVWGC/Fegaras and Sheard - 1996 - Revisiting Catamorphisms over Datatypes with Embed.pdf:application/pdf},
82 }
83
84 @inproceedings{pfenning_higher-order_1988,
85 location = {New York, {NY}, {USA}},
86 title = {Higher-Order Abstract Syntax},
87 isbn = {0-89791-269-1},
88 doi = {10.1145/53990.54010},
89 series = {{PLDI} '88},
90 abstract = {We describe motivation, design, use, and implementation of higher-order abstract syntax as a central representation for programs, formulas, rules, and other syntactic objects in program manipulation and other formal systems where matching and substitution or unification are central operations. Higher-order abstract syntax incorporates name binding information in a uniform and language generic way. Thus it acts as a powerful link integrating diverse tools in such formal environments. We have implemented higher-order abstract syntax, a supporting matching and unification algorithm, and some clients in Common Lisp in the framework of the Ergo project at Carnegie Mellon University.},
91 pages = {199--208},
92 booktitle = {Proceedings of the {ACM} {SIGPLAN} 1988 Conference on Programming Language Design and Implementation},
93 publisher = {{ACM}},
94 author = {Pfenning, F. and Elliott, C.},
95 date = {1988},
96 note = {event-place: Atlanta, Georgia, {USA}},
97 file = {Pfenning and Elliott - 1988 - Higher-Order Abstract Syntax.pdf:/home/mrl/.local/share/zotero/storage/2HSRWURK/Pfenning and Elliott - 1988 - Higher-Order Abstract Syntax.pdf:application/pdf},
98 }
99
100 @inproceedings{chlipala_parametric_2008,
101 location = {New York, {NY}, {USA}},
102 title = {Parametric Higher-Order Abstract Syntax for Mechanized Semantics},
103 isbn = {978-1-59593-919-7},
104 doi = {10.1145/1411204.1411226},
105 series = {{ICFP} '08},
106 abstract = {We present parametric higher-order abstract syntax ({PHOAS}), a new approach to formalizing the syntax of programming languages in computer proof assistants based on type theory. Like higher-order abstract syntax ({HOAS}), {PHOAS} uses the meta language's binding constructs to represent the object language's binding constructs. Unlike {HOAS}, {PHOAS} types are definable in general-purpose type theories that support traditional functional programming, like Coq's Calculus of Inductive Constructions. We walk through how Coq can be used to develop certified, executable program transformations over several statically-typed functional programming languages formalized with {PHOAS}; that is, each transformation has a machine-checked proof of type preservation and semantic preservation. Our examples include {CPS} translation and closure conversion for simply-typed lambda calculus, {CPS} translation for System F, and translation from a language with {ML}-style pattern matching to a simpler language with no variable-arity binding constructs. By avoiding the syntactic hassle associated with first-order representation techniques, we achieve a very high degree of proof automation.},
107 pages = {143--156},
108 booktitle = {Proceedings of the 13th {ACM} {SIGPLAN} International Conference on Functional Programming},
109 publisher = {{ACM}},
110 author = {Chlipala, Adam},
111 date = {2008},
112 note = {event-place: Victoria, {BC}, Canada},
113 keywords = {compiler verification, dependent types, interactive proof assistants, type-theoretic semantics},
114 file = {Chlipala - 2008 - Parametric Higher-Order Abstract Syntax for Mechan.pdf:/home/mrl/.local/share/zotero/storage/DZ33DAMU/Chlipala - 2008 - Parametric Higher-Order Abstract Syntax for Mechan.pdf:application/pdf},
115 }
116
117 @incollection{reynolds_user-defined_1978,
118 location = {New York, {NY}},
119 title = {User-Defined Types and Procedural Data Structures as Complementary Approaches to Data Abstraction},
120 isbn = {978-1-4612-6315-9},
121 abstract = {User-defined types (or modes) and procedural (or functional) data structures are complementary methods for data abstraction, each providing a capability lacked by the other. With user-defined types, all information about the representation of a particular kind of data is centralized in a type definition and hidden from the rest of the program. With procedural data structures, each part of the program which creates data can specify its own representation, independently of any representations used elsewhere for the same kind of data. However, this decentralization of the description of data is achieved at the cost of prohibiting primitive operations from accessing the representations of more than one data item. The contrast between these approaches is illustrated by a simple example.},
122 pages = {309--317},
123 booktitle = {Programming Methodology: A Collection of Articles by Members of {IFIP} {WG}2.3},
124 publisher = {Springer New York},
125 author = {Reynolds, John C.},
126 editor = {Gries, David},
127 date = {1978},
128 doi = {10.1007/978-1-4612-6315-9_22},
129 file = {Reynolds - 1978 - User-Defined Types and Procedural Data Structures .pdf:/home/mrl/.local/share/zotero/storage/ASXE73U2/Reynolds - 1978 - User-Defined Types and Procedural Data Structures .pdf:application/pdf},
130 }
131
132 @misc{ghc_team_ghc_2021,
133 title = {{GHC} User’s Guide Documentation},
134 url = {https://downloads.haskell.org/~ghc/latest/docs/users_guide.pdf},
135 publisher = {Release},
136 author = {{GHC Team}},
137 urldate = {2021-02-24},
138 date = {2021},
139 file = {GHC Team - 2021 - GHC User’s Guide Documentation.pdf:/home/mrl/.local/share/zotero/storage/87ZT5VXL/GHC Team - 2021 - GHC User’s Guide Documentation.pdf:application/pdf},
140 }
141
142 @misc{ghc_team_datadynamic_2021,
143 title = {Data.Dynamic},
144 url = {https://hackage.haskell.org/package/base-4.14.1.0/docs/Data-Dynamic.html},
145 publisher = {Release},
146 author = {{GHC Team}},
147 urldate = {2021-02-24},
148 date = {2021},
149 }
150
151 @inproceedings{jeuring_polytypic_1996,
152 location = {Berlin, Heidelberg},
153 title = {Polytypic programming},
154 isbn = {978-3-540-70639-7},
155 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.},
156 pages = {68--114},
157 booktitle = {Advanced Functional Programming},
158 publisher = {Springer Berlin Heidelberg},
159 author = {Jeuring, Johan and Jansson, Patrik},
160 editor = {Launchbury, John and Meijer, Erik and Sheard, Tim},
161 date = {1996},
162 file = {Jeuring and Jansson - 1996 - Polytypic programming.pdf:/home/mrl/.local/share/zotero/storage/SLC4G2IT/Jeuring and Jansson - 1996 - Polytypic programming.pdf:application/pdf},
163 }
164
165 @collection{peyton_jones_haskell_2003,
166 location = {Cambridge},
167 title = {Haskell 98 language and libraries: the revised report},
168 isbn = {0-521 826144},
169 pagetotal = {270},
170 publisher = {Cambridge University Press},
171 editor = {Peyton Jones, Simon},
172 date = {2003},
173 file = {Peyton Jones - 2003 - Haskell 98 language and libraries the revised rep.pdf:/home/mrl/.local/share/zotero/storage/UXEJT89I/Peyton Jones - 2003 - Haskell 98 language and libraries the revised rep.pdf:application/pdf},
174 }
175
176 @inproceedings{laufer_combining_1994,
177 title = {Combining type classes and existential types},
178 eventtitle = {Latin American Informatics Conferenc},
179 booktitle = {Proceedings of the Latin American Informatic Conference ({PANEL})},
180 publisher = {{ITESM}-{CEM}},
181 author = {Läufer, Konstantin},
182 date = {1994},
183 note = {event-place: Monterrey, Mexico},
184 file = {Läufer - COMBINING TYPE CLASSES AND EXISTENTIAL TYPES.pdf:/home/mrl/.local/share/zotero/storage/KR4P9EHS/Läufer - COMBINING TYPE CLASSES AND EXISTENTIAL TYPES.pdf:application/pdf},
185 }
186
187 @report{hughes_restricted_1999,
188 location = {Paris},
189 title = {Restricted data types in Haskell},
190 pages = {16},
191 number = {{UU}-{CS}-1999-28},
192 institution = {Department of Information and Computing Sciences, Utrecht University},
193 author = {Hughes, John},
194 date = {1999},
195 file = {Hughes - 1999 - Restricted data types in Haskell.pdf:/home/mrl/.local/share/zotero/storage/7ZE2MYWE/Hughes - 1999 - Restricted data types in Haskell.pdf:application/pdf},
196 }
197
198 @article{najd_trees_2017,
199 title = {Trees that Grow},
200 volume = {23},
201 abstract = {We study the notion of extensibility in functional data types, as a new approach to the problem of decorating abstract syntax trees with additional information. We observed the need for such extensibility while redesigning the data types representing Haskell abstract syntax inside Glasgow Haskell Compiler ({GHC}). Specifically, we describe a programming idiom that exploits type-level functions to allow a particular form of extensibility. The approach scales to support existentials and generalised algebraic data types, and we can use pattern synonyms to make it convenient in practice.},
202 pages = {42--62},
203 number = {1},
204 journaltitle = {Journal of Universal Computer Science},
205 author = {Najd, Shayan and Peyton Jones, Simon},
206 date = {2017-01-28},
207 file = {Najd and Jones - 2017 - Trees that Grow.pdf:/home/mrl/.local/share/zotero/storage/HYQFTWZP/Najd and Jones - 2017 - Trees that Grow.pdf:application/pdf},
208 }
209
210 @inproceedings{loh_open_2006,
211 location = {New York, {NY}, {USA}},
212 title = {Open Data Types and Open Functions},
213 isbn = {1-59593-388-3},
214 doi = {10.1145/1140335.1140352},
215 series = {{PPDP} '06},
216 abstract = {The problem of supporting the modular extensibility of both data and functions in one programming language at the same time is known as the expression problem. Functional languages traditionally make it easy to add new functions, but extending data (adding new data constructors) requires modifying existing code. We present a semantically and syntactically lightweight variant of open data types and open functions as a solution to the expression problem in the Haskell language. Constructors of open data types and equations of open functions may appear scattered throughout a program with several modules. The intended semantics is as follows: the program should behave as if the data types and functions were closed, defined in one place. The order of function equations is determined by best-fit pattern matching, where a specific pattern takes precedence over an unspecific one. We show that our solution is applicable to the expression problem, generic programming, and exceptions. We sketch two implementations: a direct implementation of the semantics, and a scheme based on mutually recursive modules that permits separate compilation},
217 pages = {133--144},
218 booktitle = {Proceedings of the 8th {ACM} {SIGPLAN} International Conference on Principles and Practice of Declarative Programming},
219 publisher = {{ACM}},
220 author = {Löh, Andres and Hinze, Ralf},
221 date = {2006},
222 note = {event-place: Venice, Italy},
223 keywords = {functional programming, Haskell, expression problem, extensible data types, extensible exceptions, extensible functions, generic programming, mutually recursive modules},
224 file = {OpenDatatypes.pdf:/home/mrl/.local/share/zotero/storage/NEP9GZ9N/OpenDatatypes.pdf:application/pdf},
225 }
226
227 @inproceedings{hutton_fold_1998,
228 location = {New York, {NY}, {USA}},
229 title = {Fold and Unfold for Program Semantics},
230 isbn = {1-58113-024-4},
231 doi = {10.1145/289423.289457},
232 series = {{ICFP} '98},
233 abstract = {In this paper we explain how recursion operators can be used to structure and reason about program semantics within a functional language. In particular, we show how the recursion operator fold can be used to structure denotational semantics, how the dual recursion operator unfold can be used to structure operational semantics, and how algebraic properties of these operators can be used to reason about program semantics. The techniques are explained with the aid of two main examples, the first concerning arithmetic expressions, and the second concerning Milner's concurrent language {CCS}. The aim of the paper is to give functional programmers new insights into recursion operators, program semantics, and the relationships between them.},
234 pages = {280--288},
235 booktitle = {Proceedings of the Third {ACM} {SIGPLAN} International Conference on Functional Programming},
236 publisher = {{ACM}},
237 author = {Hutton, Graham},
238 date = {1998},
239 note = {event-place: Baltimore, Maryland, {USA}},
240 file = {Hutton - 1998 - Fold and unfold for program semantics.pdf:/home/mrl/.local/share/zotero/storage/YEB9K2TP/Hutton - 1998 - Fold and unfold for program semantics.pdf:application/pdf},
241 }
242
243 @article{abadi_dynamic_1991,
244 title = {Dynamic Typing in a Statically Typed Language},
245 volume = {13},
246 issn = {0164-0925},
247 doi = {10.1145/103135.103138},
248 abstract = {Statically typed programming languages allow earlier error checking, better enforcement of diciplined programming styles, and the generation of more efficient object code than languages where all type consistency checks are performed at run time. However, even in statically typed languages, there is often the need to deal with datawhose type cannot be determined at compile time. To handle such situations safely, we propose to add a type Dynamic whose values are pairs of a value v and a type tag T where v has the type denoted by T. Instances of Dynamic are built with an explicit tagging construct and inspected with a type safe typecase construct.This paper explores the syntax, operational semantics, and denotational semantics of a simple language that includes the type Dynamic. We give examples of how dynamically typed values can be used in programming. Then we discuss an operational semantics for our language and obtain a soundness theorem. We present two formulations of the denotational semantics of this language and relate them to the operational semantics. Finally, we consider the implications of polymorphism and some implementation issues.},
249 pages = {237--268},
250 number = {2},
251 journaltitle = {{ACM} Trans. Program. Lang. Syst.},
252 author = {Abadi, Martín and Cardelli, Luca and Pierce, Benjamin and Plotkin, Gordon},
253 date = {1991-04},
254 note = {Place: New York, {NY}, {USA}
255 Publisher: {ACM}},
256 keywords = {theory},
257 file = {Abadi et al. - 1991 - Dynamic typing in a statically typed language.pdf:/home/mrl/.local/share/zotero/storage/CJSBG6X7/Abadi et al. - 1991 - Dynamic typing in a statically typed language.pdf:application/pdf},
258 }
259
260 @inproceedings{svenningsson_combining_2013,
261 location = {Berlin, Heidelberg},
262 title = {Combining Deep and Shallow Embedding for {EDSL}},
263 isbn = {978-3-642-40447-4},
264 doi = {10.1007/978-3-642-40447-4_2},
265 abstract = {When compiling embedded languages it is natural to use an abstract syntax tree to represent programs. This is known as a deep embedding and it is a rather cumbersome technique compared to other forms of embedding, typically leading to more code and being harder to extend. In shallow embeddings, language constructs are mapped directly to their semantics which yields more flexible and succinct implementations. But shallow embeddings are not well-suited for compiling embedded languages. We present a technique to combine deep and shallow embedding in the context of compiling embedded languages in order to provide the benefits of both techniques. In particular it helps keeping the deep embedding small and it makes extending the embedded language much easier. Our technique also has some unexpected but welcome knock-on effects. It provides fusion of functions to remove intermediate results for free without any additional effort. It also helps to give the embedded language a more natural programming interface.},
266 pages = {21--36},
267 booktitle = {Trends in Functional Programming},
268 publisher = {Springer Berlin Heidelberg},
269 author = {Svenningsson, Josef and Axelsson, Emil},
270 editor = {Loidl, Hans-Wolfgang and Peña, Ricardo},
271 date = {2013},
272 file = {svenningsson2013combining.pdf:/home/mrl/.local/share/zotero/storage/NFBGZCZT/svenningsson2013combining.pdf:application/pdf},
273 }
274
275 @inproceedings{yorgey_giving_2012,
276 location = {New York, {NY}, {USA}},
277 title = {Giving Haskell a Promotion},
278 isbn = {978-1-4503-1120-5},
279 doi = {10.1145/2103786.2103795},
280 series = {{TLDI} '12},
281 abstract = {Static type systems strive to be richly expressive while still being simple enough for programmers to use. We describe an experiment that enriches Haskell's kind system with two features promoted from its type system: data types and polymorphism. The new system has a very good power-to-weight ratio: it offers a significant improvement in expressiveness, but, by re-using concepts that programmers are already familiar with, the system is easy to understand and implement.},
282 pages = {53--66},
283 booktitle = {Proceedings of the 8th {ACM} {SIGPLAN} Workshop on Types in Language Design and Implementation},
284 publisher = {{ACM}},
285 author = {Yorgey, Brent A. and Weirich, Stephanie and Cretin, Julien and Peyton Jones, Simon and Vytiniotis, Dimitrios and Magalhães, José Pedro},
286 date = {2012},
287 note = {event-place: Philadelphia, Pennsylvania, {USA}},
288 keywords = {haskell, kinds, polymorphism, promotion},
289 file = {Yorgey et al. - 2012 - Giving Haskell a Promotion.pdf:/home/mrl/.local/share/zotero/storage/7GTDGQ3I/Yorgey et al. - 2012 - Giving Haskell a Promotion.pdf:application/pdf},
290 }
291
292 @inproceedings{atkey_unembedding_2009,
293 location = {New York, {NY}, {USA}},
294 title = {Unembedding Domain-Specific Languages},
295 isbn = {978-1-60558-508-6},
296 doi = {10.1145/1596638.1596644},
297 series = {Haskell '09},
298 abstract = {Higher-order abstract syntax provides a convenient way of embedding domain-specific languages, but is awkward to analyse and manipulate directly. We explore the boundaries of higher-order abstract syntax. Our key tool is the unembedding of embedded terms as de Bruijn terms, enabling intensional analysis. As part of our solution we present techniques for separating the definition of an embedded program from its interpretation, giving modular extensions of the embedded language, and different ways to encode the types of the embedded language.},
299 pages = {37--48},
300 booktitle = {Proceedings of the 2nd {ACM} {SIGPLAN} Symposium on Haskell},
301 publisher = {{ACM}},
302 author = {Atkey, Robert and Lindley, Sam and Yallop, Jeremy},
303 date = {2009},
304 note = {event-place: Edinburgh, Scotland},
305 keywords = {domain-specific languages, higher-order abstract syntax, type classes, unembedding},
306 file = {Atkey et al. - 2009 - Unembedding Domain-Specific Languages.pdf:/home/mrl/.local/share/zotero/storage/GVFRIDUG/Atkey et al. - 2009 - Unembedding Domain-Specific Languages.pdf:application/pdf},
307 }
308
309 @inproceedings{krishnamurthi_synthesizing_1998,
310 location = {Berlin, Heidelberg},
311 title = {Synthesizing object-oriented and functional design to promote re-use},
312 isbn = {978-3-540-69064-1},
313 abstract = {Many problems require recursively specified types of data and a collection of tools that operate on those data. Over time, these problems evolve so that the programmer must extend the toolkit or extend the types and adjust the existing tools accordingly. Ideally, this should be done without modifying existing code. Unfortunately, the prevailing program design strategies do not support both forms of extensibility: functional programming accommodates the addition of tools, while object-oriented programming supports either adding new tools or extending the data set, but not both. In this paper, we present a composite design pattern that synthesizes the best of both approaches and in the process resolves the tension between the two design strategies. We also show how this protocol suggests a new set of linguistic facilities for languages that support class systems.},
314 pages = {91--113},
315 booktitle = {{ECOOP}'98 — Object-Oriented Programming},
316 publisher = {Springer Berlin Heidelberg},
317 author = {Krishnamurthi, Shriram and Felleisen, Matthias and Friedman, Daniel P.},
318 editor = {Jul, Eric},
319 date = {1998},
320 note = {event-place: Brussels, Belgium},
321 file = {Krishnamurthi et al. - 1998 - Synthesizing object-oriented and functional design.pdf:/home/mrl/.local/share/zotero/storage/AMMULPPT/Krishnamurthi et al. - 1998 - Synthesizing object-oriented and functional design.pdf:application/pdf},
322 }
323
324 @incollection{gibbons_functional_2015,
325 location = {Cham},
326 title = {Functional Programming for Domain-Specific Languages},
327 isbn = {978-3-319-15940-9},
328 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.},
329 pages = {1--28},
330 booktitle = {Central European Functional Programming School: 5th Summer School, {CEFP} 2013, Cluj-Napoca, Romania, July 8-20, 2013, Revised Selected Papers},
331 publisher = {Springer International Publishing},
332 author = {Gibbons, Jeremy},
333 editor = {Zsók, Viktória and Horváth, Zoltán and Csató, Lehel},
334 date = {2015},
335 doi = {10.1007/978-3-319-15940-9_1},
336 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},
337 }
338
339 @thesis{van_der_veen_mutable_2020,
340 location = {Nijmegen},
341 title = {Mutable Collection Types in Shallow Embedded {DSLs}},
342 pagetotal = {68},
343 institution = {Radboud University},
344 type = {Master's Thesis},
345 author = {van der Veen, Erin},
346 date = {2020-06-17},
347 langid = {english},
348 file = {thesis_final.pdf:/home/mrl/.local/share/zotero/storage/Y9QWGGB9/thesis_final.pdf:application/pdf},
349 }
350
351 @thesis{de_boer_secure_2020,
352 location = {Nijmegen},
353 title = {Secure Communication Channels for the {mTask} System.},
354 pagetotal = {39},
355 institution = {Radboud University},
356 type = {Bachelor's Thesis},
357 author = {de Boer, Michel},
358 date = {2020-06},
359 langid = {english},
360 file = {Boer, de - 2020 - Secure Communication Channels for the mTask System.pdf:/home/mrl/.local/share/zotero/storage/C46E3FBF/Boer, de - 2020 - Secure Communication Channels for the mTask System.pdf:application/pdf},
361 }
362
363 @thesis{vos_draadloze_2020,
364 location = {Den Helder},
365 title = {Draadloze prestaties van de Wemos D1 Mini V3},
366 institution = {Netherlandse Defensie Academie},
367 type = {Bachelor's Thesis},
368 author = {Vos, W.F.T.},
369 date = {2020},
370 langid = {dutch},
371 file = {Draadloze prestaties van de Wemos D1 Mini V3.pdf:/home/mrl/.local/share/zotero/storage/PMN5F2E7/Draadloze prestaties van de Wemos D1 Mini V3.pdf:application/pdf},
372 }
373
374 @inproceedings{barendregt_towards_1987,
375 title = {Towards an intermediate language for graph rewriting},
376 volume = {1},
377 pages = {159--174},
378 booktitle = {{PARLE}, Parallel Architectures and Languages Europe},
379 publisher = {Springer Verlag},
380 author = {Barendregt, {HP} and van Eekelen, {MCJD} and Glauert, {JRW} and Kennaway, {JR} and Plasmeijer, {MJ} and Sleep, {MR}},
381 date = {1987},
382 file = {barh87-Lean.ps.gz:/home/mrl/.local/share/zotero/storage/63FBHND7/barh87-Lean.ps.gz:application/gzip;barh87-Lean.ps.gz:/home/mrl/.local/share/zotero/storage/6H2UKQGZ/barh87-Lean.ps.gz:application/gzip},
383 }
384
385 @online{johnson-davies_lisp_2020,
386 title = {Lisp for microcontrollers},
387 url = {https://ulisp.com},
388 titleaddon = {Lisp for microcontrollers},
389 author = {Johnson-Davies, David},
390 urldate = {2020-02-14},
391 date = {2020},
392 }
393
394 @incollection{wang_maintaining_2018,
395 location = {Cham},
396 title = {Maintaining Separation of Concerns Through Task Oriented Software Development},
397 volume = {10788},
398 isbn = {978-3-319-89718-9},
399 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.},
400 pages = {19--38},
401 booktitle = {Trends in Functional Programming},
402 publisher = {Springer International Publishing},
403 author = {Stutterheim, Jurriën and Achten, Peter and Plasmeijer, Rinus},
404 editor = {Wang, Meng and Owens, Scott},
405 urldate = {2019-01-14},
406 date = {2018},
407 langid = {english},
408 doi = {10.1007/978-3-319-89719-6},
409 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},
410 }
411
412 @thesis{serrano_type_2018,
413 title = {Type Error Customization for Embedded Domain-Specific Languages},
414 institution = {Utrecht University},
415 type = {phdthesis},
416 author = {Serrano, Alejandro},
417 date = {2018},
418 }
419
420 @inproceedings{steiner_firmata:_2009,
421 title = {Firmata: Towards Making Microcontrollers Act Like Extensions of the Computer.},
422 pages = {125--130},
423 booktitle = {{NIME}},
424 author = {Steiner, Hans-Christoph},
425 date = {2009},
426 file = {Steiner - Firmata Towards Making Microcontrollers Act Like .pdf:/home/mrl/.local/share/zotero/storage/YXMY5XHP/Steiner - Firmata Towards Making Microcontrollers Act Like .pdf:application/pdf},
427 }
428
429 @article{sugihara_programming_2008,
430 title = {Programming models for sensor networks: A survey},
431 volume = {4},
432 issn = {15504859},
433 url = {http://portal.acm.org/citation.cfm?doid=1340771.1340774},
434 doi = {10.1145/1340771.1340774},
435 shorttitle = {Programming models for sensor networks},
436 pages = {1--29},
437 number = {2},
438 journaltitle = {{ACM} Transactions on Sensor Networks},
439 shortjournal = {{ACM} Trans. Sen. Netw.},
440 author = {Sugihara, Ryo and Gupta, Rajesh K.},
441 urldate = {2019-11-01},
442 date = {2008-03-01},
443 langid = {english},
444 file = {Sugihara and Gupta - 2008 - Programming models for sensor networks A survey.pdf:/home/mrl/.local/share/zotero/storage/PQWX7QFD/Sugihara and Gupta - 2008 - Programming models for sensor networks A survey.pdf:application/pdf;Sugihara and Gupta - 2008 - Programming models for sensor networks A survey.pdf:/home/mrl/.local/share/zotero/storage/DP7V3EV8/Sugihara and Gupta - 2008 - Programming models for sensor networks A survey.pdf:application/pdf},
445 }
446
447 @article{dube_bit:_2000,
448 title = {{BIT}: A very compact Scheme system for embedded applications},
449 journaltitle = {Proceedings of the Fourth Workshop on Scheme and Functional Programming},
450 author = {Dubé, Danny},
451 date = {2000},
452 file = {dube.ps:/home/mrl/.local/share/zotero/storage/RNG6V7HT/dube.ps:application/postscript},
453 }
454
455 @inproceedings{feeley_picbit:_2003,
456 title = {{PICBIT}: A Scheme system for the {PIC} microcontroller},
457 pages = {7--15},
458 booktitle = {Proceedings of the Fourth Workshop on Scheme and Functional Programming},
459 publisher = {Citeseer},
460 author = {Feeley, Marc and Dubé, Danny},
461 date = {2003},
462 file = {Feeley and Dubé - 2003 - PICBIT A Scheme system for the PIC microcontrolle.pdf:/home/mrl/.local/share/zotero/storage/EAEJSKNR/Feeley and Dubé - 2003 - PICBIT A Scheme system for the PIC microcontrolle.pdf:application/pdf},
463 }
464
465 @inproceedings{st-amour_picobit:_2009,
466 title = {{PICOBIT}: a compact scheme system for microcontrollers},
467 pages = {1--17},
468 booktitle = {International Symposium on Implementation and Application of Functional Languages},
469 publisher = {Springer},
470 author = {St-Amour, Vincent and Feeley, Marc},
471 date = {2009},
472 file = {St-Amour and Feeley - 2009 - PICOBIT a compact scheme system for microcontroll.pdf:/home/mrl/.local/share/zotero/storage/KXRIEPJZ/St-Amour and Feeley - 2009 - PICOBIT a compact scheme system for microcontroll.pdf:application/pdf},
473 }
474
475 @article{barendsen_uniqueness_1996,
476 title = {Uniqueness typing for functional languages with graph rewriting semantics},
477 volume = {6},
478 pages = {579--612},
479 number = {6},
480 journaltitle = {Mathematical structures in computer science},
481 author = {Barendsen, Erik and Smetsers, Sjaak},
482 date = {1996},
483 file = {Barendsen and Smetsers - 1996 - Uniqueness typing for functional languages with gr.pdf:/home/mrl/.local/share/zotero/storage/BPRC6KJK/Barendsen and Smetsers - 1996 - Uniqueness typing for functional languages with gr.pdf:application/pdf},
484 }
485
486 @incollection{bolderheij_mission-driven_2018,
487 title = {A Mission-Driven C2 Framework for Enabling Heterogeneous Collaboration},
488 pages = {107--130},
489 booktitle = {{NL} {ARMS} Netherlands Annual Review of Military Studies 2018},
490 publisher = {Springer},
491 author = {Bolderheij, F and Jansen, {JM} and Kool, {AA} and Stutterheim, J},
492 date = {2018},
493 file = {Bolderheij et al. - 2018 - A Mission-Driven C2 Framework for Enabling Heterog.pdf:/home/mrl/.local/share/zotero/storage/CHDHW2TU/Bolderheij et al. - 2018 - A Mission-Driven C2 Framework for Enabling Heterog.pdf:application/pdf},
494 }
495
496 @inproceedings{lijnse_itasks_2009,
497 title = {{iTasks} 2: {iTasks} for End-users},
498 pages = {36--54},
499 booktitle = {International Symposium on Implementation and Application of Functional Languages},
500 publisher = {Springer},
501 author = {Lijnse, Bas and Plasmeijer, Rinus},
502 date = {2009},
503 file = {Lijnse and Plasmeijer - 2009 - iTasks 2 iTasks for End-users.pdf:/home/mrl/.local/share/zotero/storage/KACEWKXY/Lijnse and Plasmeijer - 2009 - iTasks 2 iTasks for End-users.pdf:application/pdf},
504 }
505
506 @inproceedings{plasmeijer_conference_2006,
507 title = {A conference management system based on the {iData} toolkit},
508 pages = {108--125},
509 booktitle = {Symposium on Implementation and Application of Functional Languages},
510 publisher = {Springer},
511 author = {Plasmeijer, Rinus and Achten, Peter},
512 date = {2006},
513 file = {Plasmeijer and Achten - 2006 - A conference management system based on the iData .pdf:/home/mrl/.local/share/zotero/storage/D4ZXJJ22/Plasmeijer and Achten - 2006 - A conference management system based on the iData .pdf:application/pdf},
514 }
515
516 @inproceedings{jansen_towards_2010,
517 location = {Seattle, {USA}},
518 title = {Towards dynamic workflows for crisis management},
519 isbn = {978-972-49-2247-8},
520 eventtitle = {7th International {ISCRAM} Conference on Information Systems for Crisis Response and Management},
521 booktitle = {7th Proceedings of the International Conference on Information Systems for Crisis Response and Management, Seattle, {WA}, {USA}, May, 2010.},
522 publisher = {Information Systems for Crisis Response and Management, {ISCRAM}},
523 author = {Jansen, Jan Martin and Lijnse, Bas and Plasmeijer, Rinus},
524 editor = {French, Simon and Tomaszewski, n and Zobel, Christopher},
525 date = {2010},
526 file = {Jansen et al. - 2010 - Towards dynamic workflows for crisis management.pdf:/home/mrl/.local/share/zotero/storage/AQSZJ3TA/Jansen et al. - 2010 - Towards dynamic workflows for crisis management.pdf:application/pdf},
527 }
528
529 @inproceedings{van_der_heijden_managing_2011,
530 title = {Managing {COPD} exacerbations with telemedicine},
531 pages = {169--178},
532 booktitle = {Conference on Artificial Intelligence in Medicine in Europe},
533 publisher = {Springer},
534 author = {van der Heijden, Maarten and Lijnse, Bas and Lucas, Peter {JF} and Heijdra, Yvonne F and Schermer, Tjard {RJ}},
535 date = {2011},
536 file = {Van Der Heijden et al. - 2011 - Managing COPD exacerbations with telemedicine.pdf:/home/mrl/.local/share/zotero/storage/AS3MPSEF/Van Der Heijden et al. - 2011 - Managing COPD exacerbations with telemedicine.pdf:application/pdf},
537 }
538
539 @inproceedings{lijnse_incidone:_2012,
540 title = {Incidone: A task-oriented incident coordination tool},
541 volume = {12},
542 booktitle = {Proceedings of the 9th International Conference on Information Systems for Crisis Response and Management, {ISCRAM}},
543 author = {Lijnse, Bas and Jansen, Jan Martin and Plasmeijer, Rinus and {others}},
544 date = {2012},
545 file = {Lijnse et al. - 2012 - Incidone A task-oriented incident coordination to.pdf:/home/mrl/.local/share/zotero/storage/EYS9U69B/Lijnse et al. - 2012 - Incidone A task-oriented incident coordination to.pdf:application/pdf},
546 }
547
548 @inproceedings{santanna_safe_2013,
549 title = {Safe system-level concurrency on resource-constrained nodes},
550 pages = {11},
551 booktitle = {Proceedings of the 11th {ACM} Conference on Embedded Networked Sensor Systems},
552 publisher = {{ACM}},
553 author = {Sant'Anna, Francisco and Rodriguez, Noemi and Ierusalimschy, Roberto and Landsiedel, Olaf and Tsigas, Philippas},
554 date = {2013},
555 file = {Sant'Anna et al. - 2013 - Safe system-level concurrency on resource-constrai.pdf:/home/mrl/.local/share/zotero/storage/4865FAU3/Sant'Anna et al. - 2013 - Safe system-level concurrency on resource-constrai.pdf:application/pdf},
556 }
557
558 @thesis{bohm_asynchronous_2019,
559 location = {Nijmegen},
560 title = {Asynchronous Actions in a Synchronous World},
561 abstract = {This thesis introduces a system for asynchronous communication in the {iTasks} framework. The
562 framework is written in Clean, a pure, lazy, functional language. Tasks need to be able to access
563 data in the system and retrieve data from all kinds of data sources. The share system allows
564 tasks to read arbitrary data sources and provides a simple interface that allows composition of
565 different data sources. This system allows tasks to share and store data in an efficient, re-usable
566 way.
567 A disadvantage of the share system is that it does not allow asynchronous evaluation. When
568 one task is using a share, other tasks have to wait for the full evaluation of this share before they
569 can be evaluated. This has the effect that users in the {iTasks} framework must wait on other
570 users. This results in poor user experience.
571 We implement a share system which, by way of share rewriting, allows asynchronous evalua-
572 tion. The system can be used to communicate with arbitrary services on the internet, as well as
573 to communicate between different {iTasks} servers in a distributed context.
574 We show how asynchronous shares are implemented and what the limitations are. We also
575 show multiple practical examples of using asynchronous shares. The new system can be effectively
576 used to consume services on the internet. It fits nicely into existing {iTasks} programs and requires
577 few changes in existing programs.},
578 pagetotal = {72},
579 institution = {Radboud University},
580 type = {Master's Thesis},
581 author = {Böhm, Haye},
582 date = {2019-01-14},
583 langid = {english},
584 file = {Bohm - Asynchronous Actions in a Synchronous World.pdf:/home/mrl/.local/share/zotero/storage/D3IYPAM5/Bohm - Asynchronous Actions in a Synchronous World.pdf:application/pdf},
585 }
586
587 @inproceedings{hentschel_supersensors:_2016,
588 location = {Vienna, Austria},
589 title = {Supersensors: Raspberry Pi Devices for Smart Campus Infrastructure},
590 isbn = {978-1-5090-4052-0},
591 doi = {10.1109/FiCloud.2016.16},
592 shorttitle = {Supersensors},
593 abstract = {We describe an approach for developing a campuswide sensor network using commodity single board computers. We sketch various use cases for environmental sensor data, for different university stakeholders. Our key premise is that supersensors—sensors with significant compute capability—enable more flexible data collection, processing and reaction. In this paper, we describe the initial prototype deployment of our supersensor system in a single department at the University of Glasgow.},
594 eventtitle = {2016 {IEEE} 4th International Conference on Future Internet of Things and Cloud ({FiCloud})},
595 pages = {58--62},
596 booktitle = {2016 {IEEE} 4th International Conference on Future Internet of Things and Cloud ({FiCloud})},
597 publisher = {{IEEE}},
598 author = {Hentschel, Kristian and Jacob, Dejice and Singer, Jeremy and Chalmers, Matthew},
599 urldate = {2019-09-04},
600 date = {2016-08},
601 langid = {english},
602 file = {Hentschel et al. - 2016 - Supersensors Raspberry Pi Devices for Smart Campu.pdf:/home/mrl/.local/share/zotero/storage/ATK53FN2/Hentschel et al. - 2016 - Supersensors Raspberry Pi Devices for Smart Campu.pdf:application/pdf},
603 }
604
605 @inproceedings{feijs_multi-tasking_2013,
606 location = {Wuxi, China},
607 title = {Multi-tasking and Arduino : why and how?},
608 isbn = {978-90-386-3462-3},
609 abstract = {In this article I argue that it is important to develop experiential prototypes which have multi-tasking capabilities. At the same time I show that for embedded prototype software based on the popular Arduino platform this is not too difficult. The approach is explained and illustrated using technical examples – practical and hands-on, down to the code level. At the same time a few helpful notations for designing and documenting the software are introduced and illustrated by the same examples. Finally a few case studies of the technical approach are listed.},
610 eventtitle = {8th International Conference on Design and Semantics of Form and Movement ({DeSForM} 2013)},
611 pages = {119--127},
612 booktitle = {8th International Conference on Design and Semantics of Form and Movement ({DeSForM} 2013)},
613 author = {Feijs, Loe},
614 editor = {Chen, L. L. and Djajadiningrat, T. and Feijs, L. M. G. and Fraser, S. and Hu, J. and Kyffin, S. and Steffen, D.},
615 date = {2013},
616 file = {Feijs - 2013 - Multi-tasking and Arduino why and how.pdf:/home/mrl/.local/share/zotero/storage/8A3Q8LHA/Feijs - 2013 - Multi-tasking and Arduino why and how.pdf:application/pdf},
617 }
618
619 @article{haenisch_case_2016,
620 title = {A case study on using functional programming for internet of things applications},
621 volume = {3},
622 number = {1},
623 journaltitle = {Athens Journal of Technology \& Engineering},
624 author = {Haenisch, Till},
625 date = {2016},
626 file = {Haenisch - 2016 - A case study on using functional programming for i.pdf:/home/mrl/.local/share/zotero/storage/EID5EW5N/Haenisch - 2016 - A case study on using functional programming for i.pdf:application/pdf},
627 }
628
629 @misc{achten_clean_2007,
630 title = {Clean for Haskell98 Programmers},
631 url = {https://www.mbsd.cs.ru.nl/publications/papers/2007/achp2007-CleanHaskellQuickGuide.pdf},
632 author = {Achten, Peter},
633 date = {2007-07-13},
634 langid = {english},
635 file = {Achten - Clean for Haskell98 Programmers.pdf:/home/mrl/.local/share/zotero/storage/69WWSGLF/Achten - Clean for Haskell98 Programmers.pdf:application/pdf},
636 }
637
638 @inproceedings{grebe_threading_2019,
639 location = {Cham},
640 title = {Threading the Arduino with Haskell},
641 isbn = {978-3-030-14805-8},
642 abstract = {Programming embedded microcontrollers often requires the scheduling of independent threads of execution, specifying the interaction and sequencing of actions in the multiple threads. Developing and debugging such multi-threaded systems can be especially challenging in highly resource constrained systems such as the Arduino line of microcontroller boards. The Haskino library, developed at the University of Kansas, allows programmers to develop code for Arduino-based microcontrollers using monadic Haskell program fragments. This paper describes our efforts to extend the Haskino library to translate monadic Haskell code to multi-threaded code executing on Arduino boards.},
643 pages = {135--154},
644 booktitle = {Trends in Functional Programming},
645 publisher = {Springer International Publishing},
646 author = {Grebe, Mark and Gill, Andy},
647 editor = {Van Horn, David and Hughes, John},
648 date = {2019},
649 file = {Grebe and Gill - Threading the Arduino with Haskell.pdf:/home/mrl/.local/share/zotero/storage/DW5PS9ZA/Grebe and Gill - Threading the Arduino with Haskell.pdf:application/pdf},
650 }
651
652 @inproceedings{baccelli_reprogramming_2018,
653 title = {Reprogramming Low-end {IoT} Devices from the Cloud},
654 pages = {1--6},
655 booktitle = {2018 3rd Cloudification of the Internet of Things ({CIoT})},
656 publisher = {{IEEE}},
657 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},
658 date = {2018},
659 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},
660 }
661
662 @thesis{alimarine_generic_2005,
663 location = {Nijmegen},
664 title = {Generic Functional Programming},
665 pagetotal = {198},
666 institution = {Radboud University},
667 type = {phdthesis},
668 author = {Alimarine, Artem},
669 date = {2005},
670 langid = {english},
671 file = {Alimarine - Generic Functional Programming.pdf:/home/mrl/.local/share/zotero/storage/L4THNJHB/Alimarine - Generic Functional Programming.pdf:application/pdf},
672 }
673
674 @inproceedings{wand_continuation-based_1980,
675 location = {Stanford University, California, United States},
676 title = {Continuation-based multiprocessing},
677 doi = {10.1145/800087.802786},
678 abstract = {Any multiprocessing facility must include three features: elementary exclusion, data protection, and process saving. While elementary exclusion must rest on some hardware facility (e.g., a test-and-set instruction), the other two requirements are fulfilled by features already present in applicative languages. Data protection may be obtained through the use of procedures (closures or funargs), and process saving may be obtained through the use of the catch operator. The use of catch, in particular, allows an elegant treatment of process saving.},
679 eventtitle = {the 1980 {ACM} conference},
680 pages = {19--28},
681 booktitle = {Proceedings of the 1980 {ACM} conference on {LISP} and functional programming - {LFP} '80},
682 publisher = {{ACM} Press},
683 author = {Wand, Mitchell},
684 urldate = {2019-02-13},
685 date = {1980},
686 langid = {english},
687 file = {Wand - 1980 - Continuation-based multiprocessing.pdf:/home/mrl/.local/share/zotero/storage/XF4Z2R9S/Wand - 1980 - Continuation-based multiprocessing.pdf:application/pdf},
688 }
689
690 @inproceedings{elliott_functional_1997,
691 title = {Functional reactive animation},
692 volume = {32},
693 pages = {263--273},
694 booktitle = {{ACM} {SIGPLAN} Notices},
695 publisher = {{ACM}},
696 author = {Elliott, Conal and Hudak, Paul},
697 date = {1997},
698 file = {Elliott and Hudak - 1997 - Functional reactive animation.pdf:/home/mrl/.local/share/zotero/storage/IJZLGXHK/Elliott and Hudak - 1997 - Functional reactive animation.pdf:application/pdf},
699 }
700
701 @thesis{piers_task-oriented_2016,
702 location = {Nijmegen},
703 title = {Task-Oriented Programming for developing non-distributed interruptible embedded systems},
704 pagetotal = {81},
705 institution = {Radboud University},
706 type = {Master's Thesis},
707 author = {Piers, Jasper},
708 date = {2016},
709 langid = {english},
710 file = {Piers - Task-Oriented Programming for developing non-distr.pdf:/home/mrl/.local/share/zotero/storage/X8BZM9D4/Piers - Task-Oriented Programming for developing non-distr.pdf:application/pdf},
711 }
712
713 @inproceedings{baccelli_scripting_2018,
714 title = {Scripting Over-The-Air: Towards Containers on Low-end Devices in the Internet of Things},
715 booktitle = {{IEEE} {PerCom} 2018},
716 author = {Baccelli, Emmanuel and Doerr, Joerg and Kikuchi, Shinji and Padilla, Francisco and Schleiser, Kaspar and Thomas, Ian},
717 date = {2018},
718 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},
719 }
720
721 @thesis{amazonas_cabral_de_andrade_developing_2018,
722 location = {Nijmegen},
723 title = {Developing Real Life, Task Oriented Applications for the Internet of Things},
724 shorttitle = {Developing Real Life, {TOP} Applications for the {IOT}},
725 pagetotal = {60},
726 institution = {Radboud University},
727 type = {Master's Thesis},
728 author = {Amazonas Cabral de Andrade, Matheus},
729 date = {2018},
730 langid = {english},
731 file = {Lubbers - prof. dr. dr.h.c. ir. M.J. Plasmeijer.pdf:/home/mrl/.local/share/zotero/storage/JXPEWS85/Lubbers - prof. dr. dr.h.c. ir. M.J. Plasmeijer.pdf:application/pdf},
732 }
733
734 @article{swierstra_data_2008,
735 title = {Data types à la carte},
736 volume = {18},
737 doi = {10.1017/S0956796808006758},
738 pages = {423--436},
739 number = {4},
740 journaltitle = {Journal of functional programming},
741 author = {Swierstra, Wouter},
742 date = {2008},
743 file = {swierstra2008.pdf:/home/mrl/.local/share/zotero/storage/BEQKBXWP/swierstra2008.pdf:application/pdf},
744 }
745
746 @article{van_groningen_exchanging_2010,
747 title = {Exchanging sources between Clean and Haskell: A double-edged front end for the Clean compiler},
748 volume = {45},
749 shorttitle = {Exchanging sources between Clean and Haskell},
750 pages = {49--60},
751 number = {11},
752 journaltitle = {{ACM} Sigplan Notices},
753 author = {van Groningen, John and van Noort, Thomas and Achten, Peter and Koopman, Pieter and Plasmeijer, Rinus},
754 date = {2010},
755 file = {groj10-Haskell_front_end_Clean.pdf:/home/mrl/.local/share/zotero/storage/WVZWX8WT/groj10-Haskell_front_end_Clean.pdf:application/pdf},
756 }
757
758 @inproceedings{grebe_haskino:_2016,
759 title = {Haskino: A remote monad for programming the arduino},
760 shorttitle = {Haskino},
761 pages = {153--168},
762 booktitle = {International Symposium on Practical Aspects of Declarative Languages},
763 publisher = {Springer},
764 author = {Grebe, Mark and Gill, Andy},
765 date = {2016},
766 file = {Grebe-16-Haskino.pdf:/home/mrl/.local/share/zotero/storage/ABG7TTLV/Grebe-16-Haskino.pdf:application/pdf},
767 }
768
769 @article{plasmeijer_itasks:_2007,
770 title = {{iTasks}: executable specifications of interactive work flow systems for the web},
771 volume = {42},
772 pages = {141--152},
773 number = {9},
774 journaltitle = {{ACM} {SIGPLAN} Notices},
775 author = {Plasmeijer, Rinus and Achten, Peter and Koopman, Pieter},
776 date = {2007},
777 file = {plar2007-ICFP07-iTasks.pdf:/home/mrl/.local/share/zotero/storage/N8EUZP7D/plar2007-ICFP07-iTasks.pdf:application/pdf},
778 }
779
780 @incollection{plasmeijer_shallow_2016,
781 location = {Cham},
782 title = {A Shallow Embedded Type Safe Extendable {DSL} for the Arduino},
783 volume = {9547},
784 isbn = {978-3-319-39110-6},
785 series = {Lecture Notes in Computer Science},
786 booktitle = {Trends in Functional Programming},
787 publisher = {Springer International Publishing},
788 author = {Plasmeijer, Rinus and Koopman, Pieter},
789 urldate = {2017-02-22},
790 date = {2016},
791 doi = {10.1007/978-3-319-39110-6},
792 file = {chp%3A10.1007%2F978-3-319-39110-6_6.pdf:/home/mrl/.local/share/zotero/storage/TJVP6FHF/chp%3A10.1007%2F978-3-319-39110-6_6.pdf:application/pdf},
793 }
794
795 @inproceedings{cheney_lightweight_2002,
796 title = {A lightweight implementation of generics and dynamics},
797 doi = {10.1145/581690.581698},
798 pages = {90--104},
799 booktitle = {Proceedings of the 2002 {ACM} {SIGPLAN} workshop on Haskell},
800 publisher = {{ACM}},
801 author = {Cheney, James and Hinze, Ralf},
802 urldate = {2017-05-15},
803 date = {2002},
804 note = {event-place: Pittsburgh Pennsylvania, {USA}},
805 keywords = {dynamic typing, generic programming, type representations},
806 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},
807 }
808
809 @article{lilis_survey_2019,
810 title = {A Survey of Metaprogramming Languages},
811 volume = {52},
812 issn = {0360-0300},
813 doi = {10.1145/3354584},
814 abstract = {Metaprogramming is the process of writing computer programs that treat programs as data, enabling them to analyze or transform existing programs or generate new ones. While the concept of metaprogramming has existed for several decades, activities focusing on metaprogramming have been increasing rapidly over the past few years, with most languages offering some metaprogramming support and the amount of metacode being developed growing exponentially. In this article, we introduce a taxonomy of metaprogramming languages and present a survey of metaprogramming languages and systems based on the taxonomy. Our classification is based on the metaprogramming model adopted by the language, the phase of the metaprogram evaluation, the metaprogram source location, and the relation between the metalanguage and the object language.},
815 number = {6},
816 journaltitle = {{ACM} Comput. Surv.},
817 author = {Lilis, Yannis and Savidis, Anthony},
818 date = {2019-10},
819 note = {Place: New York, {NY}, {USA}
820 Publisher: {ACM}},
821 keywords = {aspect-oriented programming, generative programming, macro systems, meta-object protocols, Metaprogramming, multistage languages, reflection},
822 file = {Lilis and Savidis - 2019 - A Survey of Metaprogramming Languages.pdf:/home/mrl/.local/share/zotero/storage/9MS6TUNR/Lilis and Savidis - 2019 - A Survey of Metaprogramming Languages.pdf:application/pdf},
823 }
824
825 @inproceedings{mainland_why_2007,
826 location = {New York, {NY}, {USA}},
827 title = {Why It's Nice to Be Quoted: Quasiquoting for Haskell},
828 isbn = {978-1-59593-674-5},
829 doi = {10.1145/1291201.1291211},
830 series = {Haskell '07},
831 abstract = {Quasiquoting allows programmers to use domain specific syntax to construct program fragments. By providing concrete syntax for complex data types, programs become easier to read, easier to write, and easier to reason about and maintain. Haskell is an excellent host language for embedded domain specific languages, and quasiquoting ideally complements the language features that make Haskell perform so well in this area. Unfortunately, until now no Haskell compiler has provided support for quasiquoting. We present an implementation in {GHC} and demonstrate that by leveraging existing compiler capabilities, building a full quasiquoter requires little more work than writing a parser. Furthermore, we provide a compile-time guarantee that all quasiquoted data is type-correct.},
832 pages = {73--82},
833 booktitle = {Proceedings of the {ACM} {SIGPLAN} Workshop on Haskell Workshop},
834 publisher = {{ACM}},
835 author = {Mainland, Geoffrey},
836 date = {2007},
837 note = {event-place: Freiburg, Germany},
838 keywords = {meta programming, quasiquoting},
839 file = {Mainland - 2007 - Why It's Nice to Be Quoted Quasiquoting for Haske.pdf:/home/mrl/.local/share/zotero/storage/PSJ59GY2/Mainland - 2007 - Why It's Nice to Be Quoted Quasiquoting for Haske.pdf:application/pdf},
840 }
841
842 @article{tratt_domain_2008,
843 title = {Domain Specific Language Implementation via Compile\hskip0pt-\hskip0pt Time Meta\hskip0pt-\hskip0pt Programming},
844 volume = {30},
845 issn = {0164-0925},
846 doi = {10.1145/1391956.1391958},
847 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.},
848 number = {6},
849 journaltitle = {{ACM} Trans. Program. Lang. Syst.},
850 author = {Tratt, Laurence},
851 date = {2008-10},
852 note = {Place: New York, {NY}, {USA}
853 Publisher: {ACM}},
854 keywords = {domain specific languages, compile-time meta-programming, Syntax extension},
855 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},
856 }
857
858 @inproceedings{kariotis_making_2008,
859 location = {New York, {NY}, {USA}},
860 title = {Making Monads First-Class with Template Haskell},
861 isbn = {978-1-60558-064-7},
862 doi = {10.1145/1411286.1411300},
863 series = {Haskell '08},
864 abstract = {Monads as an organizing principle for programming and semantics are notoriously difficult to grasp, yet they are a central and powerful abstraction in Haskell. This paper introduces a domain-specific language, {MonadLab}, that simplifies the construction of monads, and describes its implementation in Template Haskell. {MonadLab} makes monad construction truly first class, meaning that arcane theoretical issues with respect to monad transformers are completely hidden from the programmer. The motivation behind the design of {MonadLab} is to make monadic programming in Haskell simpler while providing a tool for non-Haskell experts that will assist them in understanding this powerful abstraction.},
865 pages = {99--110},
866 booktitle = {Proceedings of the First {ACM} {SIGPLAN} Symposium on Haskell},
867 publisher = {{ACM}},
868 author = {Kariotis, Pericles S. and Procter, Adam M. and Harrison, William L.},
869 date = {2008},
870 note = {event-place: Victoria, {BC}, Canada},
871 keywords = {domain-specific languages, monads, staged programming},
872 file = {Kariotis et al. - 2008 - Making Monads First-Class with Template Haskell.pdf:/home/mrl/.local/share/zotero/storage/ZLX24WE8/Kariotis et al. - 2008 - Making Monads First-Class with Template Haskell.pdf:application/pdf},
873 }
874
875 @inproceedings{gill_haskell_2009,
876 location = {Berlin, Heidelberg},
877 title = {A Haskell Hosted {DSL} for Writing Transformation Systems},
878 isbn = {978-3-642-03034-5},
879 abstract = {{KURE} is a Haskell hosted Domain Specific Language ({DSL}) for writing transformation systems based on rewrite strategies. When writing transformation systems, a significant amount of engineering effort goes into setting up plumbing to make sure that specific rewrite rules can fire. Systems like Stratego and Strafunski provide most of this plumbing as infrastructure, allowing the {DSL} user to focus on the rewrite rules. {KURE} is a strongly typed strategy control language in the tradition of Stratego and Strafunski. It is intended for writing reasonably efficient rewrite systems, makes use of type families to provide a delimited generic mechanism for tree rewriting, and provides support for efficient identity rewrite detection.},
880 pages = {285--309},
881 booktitle = {Domain-Specific Languages},
882 publisher = {Springer Berlin Heidelberg},
883 author = {Gill, Andy},
884 editor = {Taha, Walid Mohamed},
885 date = {2009},
886 file = {Gill2009_Chapter_AHaskellHostedDSLForWritingTra.pdf:/home/mrl/.local/share/zotero/storage/I9RJNDYR/Gill2009_Chapter_AHaskellHostedDSLForWritingTra.pdf:application/pdf},
887 }
888
889 @book{peyton_jones_implementation_1987,
890 location = {Hertfordshire},
891 title = {The Implementation of Functional Programming Languages},
892 url = {https://www.microsoft.com/en-us/research/publication/the-implementation-of-functional-programming-languages/},
893 abstract = {My 1987 book is now out of print, but it is available here in its entirety in {PDF} form, in one of two formats: single-page portrait double-page landscape Both are fully searchable, thanks to {OCR} and Norman Ramsey. Errata Section 5.2.4, p87. We need an extra rule match us [] E = E This accounts for the possibility that in the constructor rule (Section 5.2.4) there may be some non-nullary constructors for which there are no equations. P168, line 2, "{VAR}" should be "{TVAR}".},
894 publisher = {Prentice Hall},
895 author = {Peyton Jones, Simon},
896 date = {1987-01},
897 file = {Peyton Jones - 1987 - The Implementation of Functional Programming Langu.pdf:/home/mrl/.local/share/zotero/storage/9RIR6KGD/Peyton Jones - 1987 - The Implementation of Functional Programming Langu.pdf:application/pdf},
898 }
899
900 @inproceedings{sheard_template_2002,
901 location = {New York, {NY}, {USA}},
902 title = {Template Meta-Programming for Haskell},
903 isbn = {1-58113-605-6},
904 doi = {10.1145/581690.581691},
905 series = {Haskell '02},
906 abstract = {We propose a new extension to the purely functional programming language Haskell that supports compile-time meta-programming. The purpose of the system is to support the algorithmic construction of programs at compile-time.The ability to generate code at compile time allows the programmer to implement such features as polytypic programs, macro-like expansion, user directed optimization (such as inlining), and the generation of supporting data structures and functions from existing data structures and functions.Our design is being implemented in the Glasgow Haskell Compiler, ghc.},
907 pages = {1--16},
908 booktitle = {Proceedings of the 2002 {ACM} {SIGPLAN} Workshop on Haskell},
909 publisher = {{ACM}},
910 author = {Sheard, Tim and Peyton Jones, Simon},
911 date = {2002},
912 note = {event-place: Pittsburgh, Pennsylvania},
913 keywords = {meta programming, templates},
914 file = {Sheard and Jones - 2002 - Template Meta-Programming for Haskell.pdf:/home/mrl/.local/share/zotero/storage/2GSK6DSF/Sheard and Jones - 2002 - Template Meta-Programming for Haskell.pdf:application/pdf},
915 }
916
917 @inproceedings{seefried_optimising_2004,
918 location = {Berlin, Heidelberg},
919 title = {Optimising Embedded {DSLs} Using Template Haskell},
920 isbn = {978-3-540-30175-2},
921 abstract = {Embedded domain specific languages ({EDSLs}) provide a specialised language for a particular application area while harnessing the infrastructure of an existing general purpose programming language. The reduction in implementation costs that results from this approach comes at a price: the {EDSL} often compiles to inefficient code since the host language's compiler only optimises at the level of host language constructs. The paper presents an approach to solving this problem based on compile-time meta-programming which retains the simplicity of the embedded approach. We use {PanTHeon}, our implementation of an existing {EDSL} for image synthesis to demonstrate the benefits and drawbacks of this approach. Furthermore, we suggest potential improvements to Template Haskell, the meta-programming framework we are using, which would greatly improve its applicability to this kind of task.},
922 pages = {186--205},
923 booktitle = {Generative Programming and Component Engineering},
924 publisher = {Springer Berlin Heidelberg},
925 author = {Seefried, Sean and Chakravarty, Manuel and Keller, Gabriele},
926 editor = {Karsai, Gabor and Visser, Eelco},
927 date = {2004},
928 file = {Seefried et al. - 2004 - Optimising Embedded DSLs Using Template Haskell.pdf:/home/mrl/.local/share/zotero/storage/ZRKQ9AH6/Seefried et al. - 2004 - Optimising Embedded DSLs Using Template Haskell.pdf:application/pdf},
929 }
930
931 @article{hammond_automatic_2003,
932 title = {Automatic Skeletons in Template Haskell},
933 volume = {13},
934 doi = {10.1142/S0129626403001380},
935 abstract = {This paper uses Template Haskell to automatically select appropriate skeleton implementations in the Eden parallel dialect of Haskell. The approach allows implementation parameters to be statically tuned according to architectural cost models based on source analyses. This permits us to target a range of parallel architecture classes from a single source specification. A major advantage of the approach is that cost models are user-definable and can be readily extended to new data or computation structures etc.},
936 pages = {413--424},
937 number = {3},
938 journaltitle = {Parallel Processing Letters},
939 author = {Hammond, Kevin and Berthold, Jost and Loogen, Rita},
940 date = {2003},
941 file = {Hammond et al. - 2003 - AUTOMATIC SKELETONS IN TEMPLATE HASKELL.pdf:/home/mrl/.local/share/zotero/storage/HBQ8UXY3/Hammond et al. - 2003 - AUTOMATIC SKELETONS IN TEMPLATE HASKELL.pdf:application/pdf},
942 }
943
944 @inproceedings{adams_template_2012,
945 location = {New York, {NY}, {USA}},
946 title = {Template Your Boilerplate: Using Template Haskell for Efficient Generic Programming},
947 isbn = {978-1-4503-1574-6},
948 doi = {10.1145/2364506.2364509},
949 series = {Haskell '12},
950 abstract = {Generic programming allows the concise expression of algorithms that would otherwise require large amounts of handwritten code. A number of such systems have been developed over the years, but a common drawback of these systems is poor runtime performance relative to handwritten, non-generic code. Generic-programming systems vary significantly in this regard, but few consistently match the performance of handwritten code. This poses a dilemma for developers. Generic-programming systems offer concision but cost performance. Handwritten code offers performance but costs concision.This paper explores the use of Template Haskell to achieve the best of both worlds. It presents a generic-programming system for Haskell that provides both the concision of other generic-programming systems and the efficiency of handwritten code. Our system gives the programmer a high-level, generic-programming interface, but uses Template Haskell to generate efficient, non-generic code that outperforms existing generic-programming systems for Haskell.This paper presents the results of benchmarking our system against both handwritten code and several other generic-programming systems. In these benchmarks, our system matches the performance of handwritten code while other systems average anywhere from two to twenty times slower.},
951 pages = {13--24},
952 booktitle = {Proceedings of the 2012 Haskell Symposium},
953 publisher = {{ACM}},
954 author = {Adams, Michael D. and {DuBuisson}, Thomas M.},
955 date = {2012},
956 note = {event-place: Copenhagen, Denmark},
957 keywords = {generic programming, scrap your boilerplate, template haskell},
958 file = {Adams and DuBuisson - 2012 - Template Your Boilerplate Using Template Haskell .pdf:/home/mrl/.local/share/zotero/storage/ANAHWLB5/Adams and DuBuisson - 2012 - Template Your Boilerplate Using Template Haskell .pdf:application/pdf},
959 }
960
961 @inproceedings{norell_prototyping_2004,
962 location = {Berlin, Heidelberg},
963 title = {Prototyping Generic Programming in Template Haskell},
964 isbn = {978-3-540-27764-4},
965 abstract = {Generic Programming deals with the construction of programs that can be applied to many different datatypes. This is achieved by parameterizing the generic programs by the structure of the datatypes on which they are to be applied. Programs that can be defined generically range from simple map functions through pretty printers to complex {XML} tools.},
966 pages = {314--333},
967 booktitle = {Mathematics of Program Construction},
968 publisher = {Springer Berlin Heidelberg},
969 author = {Norell, Ulf and Jansson, Patrik},
970 editor = {Kozen, Dexter},
971 date = {2004},
972 file = {Norell and Jansson - 2004 - Prototyping Generic Programming in Template Haskel.pdf:/home/mrl/.local/share/zotero/storage/S3EXD65Z/Norell and Jansson - 2004 - Prototyping Generic Programming in Template Haskel.pdf:application/pdf},
973 }
974
975 @incollection{odonnell_embedding_2004,
976 location = {Berlin, Heidelberg},
977 title = {Embedding a Hardware Description Language in Template Haskell},
978 isbn = {978-3-540-25935-0},
979 abstract = {Hydra is a domain-specific language for designing digital circuits, which is implemented by embedding within Haskell. Many features required for hardware specification fit well within functional languages, leading in many cases to a perfect embedding. There are some situations, including netlist generation and software logic probes, where the {DSL} does not fit exactly within the host functional language. A new solution to these problems is based on program transformations performed automatically by metaprograms in Template Haskell.},
980 pages = {143--164},
981 booktitle = {Domain-Specific Program Generation: International Seminar, Dagstuhl Castle, Germany, March 23-28, 2003. Revised Papers},
982 publisher = {Springer Berlin Heidelberg},
983 author = {O'Donnell, John T.},
984 editor = {Lengauer, Christian and Batory, Don and Consel, Charles and Odersky, Martin},
985 date = {2004},
986 doi = {10.1007/978-3-540-25935-0_9},
987 file = {O'Donnell - 2004 - Embedding a Hardware Description Language in Templ.pdf:/home/mrl/.local/share/zotero/storage/Z2XT7SM3/O'Donnell - 2004 - Embedding a Hardware Description Language in Templ.pdf:application/pdf},
988 }
989
990 @misc{lynagh_unrolling_2003,
991 title = {Unrolling and Simplifying Expressions with Template Haskell},
992 url = {http://web.comlab.ox.ac.uk/oucl/work/ian.lynagh/papers/},
993 author = {Lynagh, Ian},
994 urldate = {2021-09-07},
995 date = {2003-05},
996 file = {10.1.1.5.9813.pdf:/home/mrl/.local/share/zotero/storage/G4AFM8XZ/10.1.1.5.9813.pdf:application/pdf},
997 }
998
999 @article{elliott_compiling_2003,
1000 title = {Compiling embedded languages},
1001 volume = {13},
1002 doi = {10.1017/S0956796802004574},
1003 pages = {455--481},
1004 number = {3},
1005 journaltitle = {Journal of Functional Programming},
1006 author = {Elliott, Conal and Finne, Sigbjørn and de Moor, Oege},
1007 date = {2003},
1008 note = {Publisher: Cambridge University Press},
1009 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},
1010 }
1011
1012 @incollection{czarnecki_dsl_2004,
1013 location = {Berlin, Heidelberg},
1014 title = {{DSL} Implementation in {MetaOCaml}, Template Haskell, and C++},
1015 isbn = {978-3-540-25935-0},
1016 abstract = {A wide range of domain-specific languages ({DSLs}) has been implemented successfully by embedding them in general purpose languages. This paper reviews embedding, and summarizes how two alternative techniques – staged interpreters and templates – can be used to overcome the limitations of embedding. Both techniques involve a form of generative programming. The paper reviews and compares three programming languages that have special support for generative programming. Two of these languages ({MetaOCaml} and Template Haskell) are research languages, while the third (C++) is already in wide industrial use. The paper identifies several dimensions that can serve as a basis for comparing generative languages.},
1017 pages = {51--72},
1018 booktitle = {Domain-Specific Program Generation: International Seminar, Dagstuhl Castle, Germany, March 23-28, 2003. Revised Papers},
1019 publisher = {Springer Berlin Heidelberg},
1020 author = {Czarnecki, Krzysztof and O'Donnell, John T. and Striegnitz, Jörg and Taha, Walid},
1021 editor = {Lengauer, Christian and Batory, Don and Consel, Charles and Odersky, Martin},
1022 date = {2004},
1023 doi = {10.1007/978-3-540-25935-0_4},
1024 file = {Czarnecki et al. - 2004 - DSL Implementation in MetaOCaml, Template Haskell,.pdf:/home/mrl/.local/share/zotero/storage/U6E3325Q/Czarnecki et al. - 2004 - DSL Implementation in MetaOCaml, Template Haskell,.pdf:application/pdf},
1025 }
1026
1027 @inproceedings{sheard_accomplishments_2001,
1028 location = {Berlin, Heidelberg},
1029 title = {Accomplishments and Research Challenges in Meta-programming},
1030 isbn = {978-3-540-44806-8},
1031 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.},
1032 pages = {2--44},
1033 booktitle = {Semantics, Applications, and Implementation of Program Generation},
1034 publisher = {Springer Berlin Heidelberg},
1035 author = {Sheard, Tim},
1036 editor = {Taha, Walid},
1037 date = {2001},
1038 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},
1039 }
1040
1041 @inproceedings{kohlbecker_hygienic_1986,
1042 location = {New York, {NY}, {USA}},
1043 title = {Hygienic Macro Expansion},
1044 isbn = {0-89791-200-4},
1045 doi = {10.1145/319838.319859},
1046 series = {{LFP} '86},
1047 pages = {151--161},
1048 booktitle = {Proceedings of the 1986 {ACM} Conference on {LISP} and Functional Programming},
1049 publisher = {{ACM}},
1050 author = {Kohlbecker, Eugene and Friedman, Daniel P. and Felleisen, Matthias and Duba, Bruce},
1051 date = {1986},
1052 note = {event-place: Cambridge, Massachusetts, {USA}},
1053 file = {Kohlbecker et al. - 1986 - Hygienic Macro Expansion.pdf:/home/mrl/.local/share/zotero/storage/MFH642JU/Kohlbecker et al. - 1986 - Hygienic Macro Expansion.pdf:application/pdf},
1054 }
1055
1056 @inproceedings{lammel_scrap_2003,
1057 location = {New York, {NY}, {USA}},
1058 title = {Scrap Your Boilerplate: A Practical Design Pattern for Generic Programming},
1059 isbn = {1-58113-649-8},
1060 doi = {10.1145/604174.604179},
1061 series = {{TLDI} '03},
1062 abstract = {We describe a design pattern for writing programs that traverse data structures built from rich mutually-recursive data types. Such programs often have a great deal of "boilerplate" code that simply walks the structure, hiding a small amount of "real" code that constitutes the reason for the traversal.Our technique allows most of this boilerplate to be written once and for all, or even generated mechanically, leaving the programmer free to concentrate on the important part of the algorithm. These generic programs are much more adaptive when faced with data structure evolution because they contain many fewer lines of type-specific code.Our approach is simple to understand, reasonably efficient, and it handles all the data types found in conventional functional programming languages. It makes essential use of rank-2 polymorphism, an extension found in some implementations of Haskell. Further it relies on a simple type-safe cast operator.},
1063 pages = {26--37},
1064 booktitle = {Proceedings of the 2003 {ACM} {SIGPLAN} International Workshop on Types in Languages Design and Implementation},
1065 publisher = {{ACM}},
1066 author = {Lämmel, Ralf and Peyton Jones, Simon},
1067 date = {2003},
1068 note = {event-place: New Orleans, Louisiana, {USA}},
1069 keywords = {generic programming, rank-2 types, traversal, type cast},
1070 file = {Lämmel and Jones - 2003 - Scrap Your Boilerplate A Practical Design Pattern.pdf:/home/mrl/.local/share/zotero/storage/P2PJYYY3/Lämmel and Jones - 2003 - Scrap Your Boilerplate A Practical Design Pattern.pdf:application/pdf},
1071 }
1072
1073 @inproceedings{bawden_quasiquotation_1999,
1074 location = {Aarhus, Denmark},
1075 title = {Quasiquotation in Lisp},
1076 volume = {{NS}-99-1},
1077 doi = {10.1.1.22.1290},
1078 series = {{BRICS} Notes Series},
1079 eventtitle = {{ACM} {SIGPLAN} Workshop on Partial Evaluation and Semantics-Based Program Manipulation},
1080 pages = {88--99},
1081 booktitle = {O. Danvy, Ed., University of Aarhus, Dept. of Computer Science},
1082 publisher = {{BRICS}},
1083 author = {Bawden, Alan},
1084 date = {1999},
1085 file = {Bawden - 1999 - Quasiquotation in Lisp.pdf:/home/mrl/.local/share/zotero/storage/CIFANZAW/Bawden - 1999 - Quasiquotation in Lisp.pdf:application/pdf},
1086 }
1087
1088 @inproceedings{clifton-everest_embedding_2014,
1089 location = {Cham},
1090 title = {Embedding Foreign Code},
1091 isbn = {978-3-319-04132-2},
1092 abstract = {Special purpose embedded languages facilitate generating high-performance code from purely functional high-level code; for example, we want to program highly parallel {GPUs} without the usual high barrier to entry and the time-consuming development process. We previously demonstrated the feasibility of a skeleton-based, generative approach to compiling such embedded languages.},
1093 pages = {136--151},
1094 booktitle = {Practical Aspects of Declarative Languages},
1095 publisher = {Springer International Publishing},
1096 author = {Clifton-Everest, Robert and {McDonell}, Trevor L. and Chakravarty, Manuel M. T. and Keller, Gabriele},
1097 editor = {Flatt, Matthew and Guo, Hai-Feng},
1098 date = {2014},
1099 file = {Clifton-Everest et al. - 2014 - Embedding Foreign Code.pdf:/home/mrl/.local/share/zotero/storage/JTJGK5BX/Clifton-Everest et al. - 2014 - Embedding Foreign Code.pdf:application/pdf},
1100 }
1101
1102 @inproceedings{shioda_libdsl_2014,
1103 location = {New York, {NY}, {USA}},
1104 title = {{LibDSL}: A Library for Developing Embedded Domain Specific Languages in d via Template Metaprogramming},
1105 isbn = {978-1-4503-3161-6},
1106 doi = {10.1145/2658761.2658770},
1107 series = {{GPCE} 2014},
1108 abstract = {This paper presents a library called {LibDSL} that helps the implementer of an embedded domain specific language ({EDSL}) effectively develop it in D language. The {LibDSL} library accepts as input some kinds of “specifications” of the {EDSL} that the implementer is going to develop and a D program within which an {EDSL} source program written by the user is embedded. It produces the front-end code of an {LALR} parser for the {EDSL} program and back-end code of the execution engine. {LibDSL} is able to produce two kinds of execution engines, namely compiler-based and interpreter-based engines, either of which the user can properly choose depending on whether an {EDSL} program is known at compile time or not. We have implemented the {LibDSL} system by using template metaprogramming and other advanced facilities such as compile-time function execution of D language. {EDSL} programs developed by means of {LibDSL} have a nice integrativeness with the host language.},
1109 pages = {63--72},
1110 booktitle = {Proceedings of the 2014 International Conference on Generative Programming: Concepts and Experiences},
1111 publisher = {{ACM}},
1112 author = {Shioda, Masato and Iwasaki, Hideya and Sato, Shigeyuki},
1113 date = {2014},
1114 note = {event-place: Västerås, Sweden},
1115 keywords = {Metaprogramming, D language, Embedded domain specific languages, Library},
1116 file = {Shioda et al. - 2014 - LibDSL A Library for Developing Embedded Domain S.pdf:/home/mrl/.local/share/zotero/storage/3WFYJPFR/Shioda et al. - 2014 - LibDSL A Library for Developing Embedded Domain S.pdf:application/pdf},
1117 }
1118
1119 @inproceedings{duregard_embedded_2011,
1120 location = {New York, {NY}, {USA}},
1121 title = {Embedded Parser Generators},
1122 isbn = {978-1-4503-0860-1},
1123 doi = {10.1145/2034675.2034689},
1124 series = {Haskell '11},
1125 abstract = {We present a novel method of embedding context-free grammars in Haskell, and to automatically generate parsers and pretty-printers from them. We have implemented this method in a library called {BNFC}-meta (from the {BNF} Converter, which it is built on). The library builds compiler front ends using metaprogramming instead of conventional code generation. Parsers are built from labelled {BNF} grammars that are defined directly in Haskell modules. Our solution combines features of parser generators (static grammar checks, a highly specialised grammar {DSL}) and adds several features that are otherwise exclusive to combinatory libraries such as the ability to reuse, parameterise and generate grammars inside Haskell.To allow writing grammars in concrete syntax, {BNFC}-meta provides a quasi-quoter that can parse grammars (embedded in Haskell files) at compile time and use metaprogramming to replace them with their abstract syntax. We also generate quasi-quoters so that the languages we define with {BNFC}-meta can be embedded in the same way. With a minimal change to the grammar, we support adding anti-quotation to the generated quasi-quoters, which allows users of the defined language to mix concrete and abstract syntax almost seamlessly. Unlike previous methods of achieving anti-quotation, the method used by {BNFC}-meta is simple, efficient and avoids polluting the abstract syntax types.},
1126 pages = {107--117},
1127 booktitle = {Proceedings of the 4th {ACM} Symposium on Haskell},
1128 publisher = {{ACM}},
1129 author = {Duregård, Jonas and Jansson, Patrik},
1130 date = {2011},
1131 note = {event-place: Tokyo, Japan},
1132 keywords = {domain specific languages, metaprogramming},
1133 file = {Duregård and Jansson - 2011 - Embedded Parser Generators.pdf:/home/mrl/.local/share/zotero/storage/H5A8TPWV/Duregård and Jansson - 2011 - Embedded Parser Generators.pdf:application/pdf},
1134 }
1135
1136 @inproceedings{eisenberg_promoting_2014,
1137 location = {New York, {NY}, {USA}},
1138 title = {Promoting Functions to Type Families in Haskell},
1139 isbn = {978-1-4503-3041-1},
1140 doi = {10.1145/2633357.2633361},
1141 series = {Haskell '14},
1142 abstract = {Haskell, as implemented in the Glasgow Haskell Compiler ({GHC}), is enriched with many extensions that support type-level programming, such as promoted datatypes, kind polymorphism, and type families. Yet, the expressiveness of the type-level language remains limited. It is missing many features present at the term level, including case expressions, anonymous functions, partially-applied functions, and let expressions. In this paper, we present an algorithm - with a proof of correctness - to encode these term-level constructs at the type level. Our approach is automated and capable of promoting a wide array of functions to type families. We also highlight and discuss those term-level features that are not promotable. In so doing, we offer a critique on {GHC}'s existing type system, showing what it is already capable of and where it may want improvement.We believe that delineating the mismatch between {GHC}'s term level and its type level is a key step toward supporting dependently typed programming.},
1143 pages = {95--106},
1144 booktitle = {Proceedings of the 2014 {ACM} {SIGPLAN} Symposium on Haskell},
1145 publisher = {{ACM}},
1146 author = {Eisenberg, Richard A. and Stolarek, Jan},
1147 date = {2014},
1148 note = {event-place: Gothenburg, Sweden},
1149 keywords = {Haskell, defunctionalization, type-level programming},
1150 file = {Eisenberg and Stolarek - 2014 - Promoting Functions to Type Families in Haskell.pdf:/home/mrl/.local/share/zotero/storage/PQXGBM6M/Eisenberg and Stolarek - 2014 - Promoting Functions to Type Families in Haskell.pdf:application/pdf},
1151 }
1152
1153 @inproceedings{viera_staged_2018,
1154 location = {New York, {NY}, {USA}},
1155 title = {A Staged Embedding of Attribute Grammars in Haskell},
1156 isbn = {978-1-4503-7143-8},
1157 doi = {10.1145/3310232.3310235},
1158 series = {{IFL} 2018},
1159 abstract = {In this paper, we present an embedding of attribute grammars in Haskell, that is both modular and type-safe, while providing the user with domain specific error messages.Our approach involves to delay part of the safety checks to runtime. When a grammar is correct, we are able to extract a function that can be run without expecting any runtime error related to the {EDSL}.},
1160 pages = {95--106},
1161 booktitle = {Proceedings of the 30th Symposium on Implementation and Application of Functional Languages},
1162 publisher = {{ACM}},
1163 author = {Viera, Marcos and Balestrieri, Florent and Pardo, Alberto},
1164 date = {2018},
1165 note = {event-place: Lowell, {MA}, {USA}},
1166 keywords = {Haskell, {EDSL}, Attribute Grammars, Dynamics, Staging},
1167 file = {Viera et al. - 2018 - A Staged Embedding of Attribute Grammars in Haskel.pdf:/home/mrl/.local/share/zotero/storage/53D4HT9C/Viera et al. - 2018 - A Staged Embedding of Attribute Grammars in Haskel.pdf:application/pdf},
1168 }
1169
1170 @article{laufer_type_1996,
1171 title = {Type classes with existential types},
1172 volume = {6},
1173 doi = {10.1017/S0956796800001817},
1174 pages = {485--518},
1175 number = {3},
1176 journaltitle = {Journal of Functional Programming},
1177 author = {Läufer, Konstantin},
1178 date = {1996},
1179 note = {Publisher: Cambridge University Press},
1180 file = {Läufer - 1996 - Type classes with existential types.pdf:/home/mrl/.local/share/zotero/storage/FG73PZJE/Läufer - 1996 - Type classes with existential types.pdf:application/pdf},
1181 }
1182
1183 @incollection{hinze_fun_2003,
1184 location = {Palgrave},
1185 title = {Fun With Phantom Types},
1186 isbn = {978-0-333-99285-2},
1187 series = {Cornerstones of Computing},
1188 pages = {245--262},
1189 booktitle = {The Fun of Programming},
1190 publisher = {Bloomsbury Publishing},
1191 author = {Hinze, Ralf},
1192 editor = {Gibbons, Jeremy and de Moor, Oege},
1193 date = {2003},
1194 }
1195
1196 @inproceedings{boulton_experience_1992,
1197 location = {North-Holland},
1198 title = {Experience with embedding hardware description languages in {HOL}},
1199 volume = {10},
1200 isbn = {0-444-89686-4},
1201 abstract = {The semantics of hardware description languages can be represented in higher order logic. This provides a formal de nition that is suitable for machine processing. Experiments are in progress at Cambridge to see whether this method can be the basis of practical tools based on the {HOL} theorem-proving assistant. Three languages are being investigated: {ELLA}, Silage and {VHDL}. The approaches taken for these languages are compared and current progress on building semantically-based theorem-proving tools is discussed.},
1202 eventtitle = {Proceedings of the {IFIP} {TC}10/{WG} 10.2 International Conference on Theorem Provers in Circuit Design: Theory, Practice and Experience},
1203 pages = {129--156},
1204 booktitle = {{IFIP} {TC}10/{WG}},
1205 publisher = {Elsevier},
1206 author = {Boulton, Richard and Gordon, Andrew and Gordon, Mike and Harrison, John and Herbert, John and Tassel, John Van},
1207 editor = {Stavridou, Victoria and Melham, Thomas F. and Boute, Raymond T.},
1208 date = {1992},
1209 langid = {english},
1210 note = {event-place: Nijmegen, {NL}},
1211 file = {Boulton et al. - Experience with embedding hardware description lan.pdf:/home/mrl/.local/share/zotero/storage/USAAA6WM/Boulton et al. - Experience with embedding hardware description lan.pdf:application/pdf},
1212 }
1213
1214 @inproceedings{terei_safe_2012,
1215 location = {New York, {NY}, {USA}},
1216 title = {Safe Haskell},
1217 isbn = {978-1-4503-1574-6},
1218 doi = {10.1145/2364506.2364524},
1219 series = {Haskell '12},
1220 abstract = {Though Haskell is predominantly type-safe, implementations contain a few loopholes through which code can bypass typing and module encapsulation. This paper presents Safe Haskell, a language extension that closes these loopholes. Safe Haskell makes it possible to confine and safely execute untrusted, possibly malicious code. By strictly enforcing types, Safe Haskell allows a variety of different policies from {API} sandboxing to information-flow control to be implemented easily as monads. Safe Haskell is aimed to be as unobtrusive as possible. It enforces properties that programmers tend to meet already by convention. We describe the design of Safe Haskell and an implementation (currently shipping with {GHC}) that infers safety for code that lies in a safe subset of the language. We use Safe Haskell to implement an online Haskell interpreter that can securely execute arbitrary untrusted code with no overhead. The use of Safe Haskell greatly simplifies this task and allows the use of a large body of existing code and tools.},
1221 pages = {137--148},
1222 booktitle = {Proceedings of the 2012 Haskell Symposium},
1223 publisher = {{ACM}},
1224 author = {Terei, David and Marlow, Simon and Peyton Jones, Simon and Mazières, David},
1225 date = {2012},
1226 note = {event-place: Copenhagen, Denmark},
1227 keywords = {haskell, security, type safety},
1228 file = {2364506.2364524.pdf:/home/mrl/.local/share/zotero/storage/5SMB272R/2364506.2364524.pdf:application/pdf},
1229 }
1230
1231 @report{leijen_parsec_2001,
1232 location = {Utrecht},
1233 title = {Parsec: Direct Style Monadic Parser Combinators For The Real World},
1234 pages = {22},
1235 number = {{UU}-{CS}-2001-27},
1236 institution = {Universiteit Utrecht},
1237 author = {Leijen, Daan and Meijer, Erik},
1238 date = {2001},
1239 langid = {english},
1240 file = {Leijen - Parsec Direct Style Monadic Parser Combinators Fo.pdf:/home/mrl/.local/share/zotero/storage/J78G3FZ2/Leijen - Parsec Direct Style Monadic Parser Combinators Fo.pdf:application/pdf},
1241 }
1242
1243 @inproceedings{gibbons_folding_2014,
1244 location = {New York, {NY}, {USA}},
1245 title = {Folding Domain-Specific Languages: Deep and Shallow Embeddings (Functional Pearl)},
1246 isbn = {978-1-4503-2873-9},
1247 doi = {10.1145/2628136.2628138},
1248 series = {{ICFP} '14},
1249 abstract = {A domain-specific language can be implemented by embedding within a general-purpose host language. This embedding may be deep or shallow, depending on whether terms in the language construct syntactic or semantic representations. The deep and shallow styles are closely related, and intimately connected to folds; in this paper, we explore that connection.},
1250 pages = {339--347},
1251 booktitle = {Proceedings of the 19th {ACM} {SIGPLAN} International Conference on Functional Programming},
1252 publisher = {{ACM}},
1253 author = {Gibbons, Jeremy and Wu, Nicolas},
1254 date = {2014},
1255 note = {event-place: Gothenburg, Sweden},
1256 keywords = {domain-specific languages, deep and shallow embedding, folds},
1257 file = {Gibbons and Wu - 2014 - Folding Domain-Specific Languages Deep and Shallo.pdf:/home/mrl/.local/share/zotero/storage/6WNWSLFJ/Gibbons and Wu - 2014 - Folding Domain-Specific Languages Deep and Shallo.pdf:application/pdf},
1258 }
1259
1260 @inproceedings{oliveira_typecase_2005,
1261 location = {New York, {NY}, {USA}},
1262 title = {{TypeCase}: A Design Pattern for Type-Indexed Functions},
1263 isbn = {1-59593-071-X},
1264 doi = {10.1145/1088348.1088358},
1265 series = {Haskell '05},
1266 abstract = {A type-indexed function is a function that is defined for each member of some family of types. Haskell's type class mechanism provides collections of open type-indexed functions, in which the indexing family can be extended by defining a new type class instance but the collection of functions is fixed. The purpose of this paper is to present {TypeCase}: a design pattern that allows the definition of closed type-indexed functions, in which the index family is fixed but the collection of functions is extensible. It is inspired by Cheney and Hinze's work on lightweight approaches to generic programming. We generalise their techniques as a design pattern. Furthermore, we show that type-indexed functions with type-indexed types, and consequently generic functions with generic types, can also be encoded in a lightweight manner, thereby overcoming one of the main limitations of the lightweight approaches.},
1267 pages = {98--109},
1268 booktitle = {Proceedings of the 2005 {ACM} {SIGPLAN} Workshop on Haskell},
1269 publisher = {{ACM}},
1270 author = {Oliveira, Bruno C. d. S. and Gibbons, Jeremy},
1271 date = {2005},
1272 note = {event-place: Tallinn, Estonia},
1273 keywords = {generic programming, type classes, type-indexed functions},
1274 file = {Oliveira and Gibbons - 2005 - TypeCase A Design Pattern for Type-Indexed Functi.pdf:/home/mrl/.local/share/zotero/storage/RBKEZKHN/Oliveira and Gibbons - 2005 - TypeCase A Design Pattern for Type-Indexed Functi.pdf:application/pdf},
1275 }
1276
1277 @inproceedings{odersky_putting_1996,
1278 location = {New York, {NY}, {USA}},
1279 title = {Putting Type Annotations to Work},
1280 isbn = {0-89791-769-3},
1281 doi = {10.1145/237721.237729},
1282 series = {{POPL} '96},
1283 abstract = {We study an extension of the Hindley/Milner system with explicit type scheme annotations and type declarations. The system can express polymorphic function arguments, user-defined data types with abstract components, and structure types with polymorphic fields. More generally, all programs of the polymorphic lambda calculus can be encoded by a translation between typing derivations. We show that type reconstruction in this system can be reduced to the decidable problem of first-order unification under a mixed prefix.},
1284 pages = {54--67},
1285 booktitle = {Proceedings of the 23rd {ACM} {SIGPLAN}-{SIGACT} Symposium on Principles of Programming Languages},
1286 publisher = {{ACM}},
1287 author = {Odersky, Martin and Läufer, Konstantin},
1288 date = {1996},
1289 note = {event-place: St. Petersburg Beach, Florida, {USA}},
1290 file = {Odersky and Läufer - 1996 - Putting Type Annotations to Work.pdf:/home/mrl/.local/share/zotero/storage/WC37TU5H/Odersky and Läufer - 1996 - Putting Type Annotations to Work.pdf:application/pdf},
1291 }
1292
1293 @inproceedings{najd_everything_2016,
1294 location = {New York, {NY}, {USA}},
1295 title = {Everything Old is New Again: Quoted Domain-Specific Languages},
1296 isbn = {978-1-4503-4097-7},
1297 doi = {10.1145/2847538.2847541},
1298 series = {{PEPM} '16},
1299 abstract = {We describe a new approach to implementing Domain-Specific Languages({DSLs}), called Quoted {DSLs} ({QDSLs}), that is inspired by two old ideas:quasi-quotation, from {McCarthy}'s Lisp of 1960, and the subformula principle of normal proofs, from Gentzen's natural deduction of 1935. {QDSLs} reuse facilities provided for the host language, since host and quoted terms share the same syntax, type system, and normalisation rules. {QDSL} terms are normalised to a canonical form, inspired by the subformula principle, which guarantees that one can use higher-order types in the source while guaranteeing first-order types in the target, and enables using types to guide fusion. We test our ideas by re-implementing Feldspar, which was originally implemented as an Embedded {DSL} ({EDSL}), as a {QDSL}; and we compare the {QDSL} and {EDSL} variants. The two variants produce identical code.},
1300 pages = {25--36},
1301 booktitle = {Proceedings of the 2016 {ACM} {SIGPLAN} Workshop on Partial Evaluation and Program Manipulation},
1302 publisher = {{ACM}},
1303 author = {Najd, Shayan and Lindley, Sam and Svenningsson, Josef and Wadler, Philip},
1304 date = {2016},
1305 note = {event-place: St. Petersburg, {FL}, {USA}},
1306 keywords = {{EDSL}, domain-specific language, {DSL}, embedded language, normalisation, {QDSL}, quotation, subformula principle},
1307 file = {Najd et al. - 2016 - Everything Old is New Again Quoted Domain-Specifi.pdf:/home/mrl/.local/share/zotero/storage/NZJW5ZVF/Najd et al. - 2016 - Everything Old is New Again Quoted Domain-Specifi.pdf:application/pdf},
1308 }
1309
1310 @article{carette_finally_2009,
1311 title = {Finally tagless, partially evaluated: Tagless staged interpreters for simpler typed languages},
1312 volume = {19},
1313 doi = {10.1017/S0956796809007205},
1314 pages = {509--543},
1315 number = {5},
1316 journaltitle = {Journal of Functional Programming},
1317 author = {Carette, Jacques and Kiselyov, Oleg and Shan, Chung-Chieh},
1318 date = {2009},
1319 note = {Publisher: Cambridge University Press},
1320 file = {CARETTE et al. - 2009 - Finally tagless, partially evaluated Tagless stag.pdf:/home/mrl/.local/share/zotero/storage/T8C8VMHP/CARETTE et al. - 2009 - Finally tagless, partially evaluated Tagless stag.pdf:application/pdf},
1321 }
1322
1323 @inproceedings{leijen_domain_2000,
1324 location = {New York, {NY}, {USA}},
1325 title = {Domain Specific Embedded Compilers},
1326 isbn = {1-58113-255-7},
1327 doi = {10.1145/331960.331977},
1328 series = {{DSL} '99},
1329 abstract = {Domain-specific embedded languages ({DSELs}) expressed in higher-order, typed ({HOT}) languages provide a composable framework for domain-specific abstractions. Such a framework is of greater utility than a collection of stand-alone domain-specific languages. Usually, embedded domain specific languages are build on top of a set of domain specific primitive functions that are ultimately implemented using some form of foreign function call. We sketch a general design pattern/or embedding client-server style services into Haskell using a domain specific embedded compiler for the server's source language. In particular we apply this idea to implement Haskell/{DB}, a domain specific embdedded compiler that dynamically generates of {SQL} queries from monad comprehensions, which are then executed on an arbitrary {ODBC} database server.},
1330 pages = {109--122},
1331 booktitle = {Proceedings of the 2nd Conference on Domain-Specific Languages},
1332 publisher = {{ACM}},
1333 author = {Leijen, Daan and Meijer, Erik},
1334 date = {2000},
1335 note = {event-place: Austin, Texas, {USA}},
1336 file = {Leijen and Meijer - 2000 - Domain Specific Embedded Compilers.pdf:/home/mrl/.local/share/zotero/storage/YHPF2VZ6/Leijen and Meijer - 2000 - Domain Specific Embedded Compilers.pdf:application/pdf},
1337 }
1338
1339 @report{plasmeijer_clean_2021,
1340 location = {Nijmegen},
1341 title = {Clean Language Report version 3.1},
1342 pages = {127},
1343 institution = {Institute for Computing and Information Sciences},
1344 author = {Plasmeijer, Rinus and van Eekelen, Marko and van Groningen, John},
1345 urldate = {2021-12-22},
1346 date = {2021-12-22},
1347 file = {CleanLanguageReport.pdf:/home/mrl/.local/share/zotero/storage/I2SDRIH6/CleanLanguageReport.pdf:application/pdf},
1348 }
1349
1350 @incollection{kiselyov_typed_2012,
1351 location = {Berlin, Heidelberg},
1352 title = {Typed Tagless Final Interpreters},
1353 isbn = {978-3-642-32202-0},
1354 abstract = {The so-called `typed tagless final' approach of [6] has collected and polished a number of techniques for representing typed higher-order languages in a typed metalanguage, along with type-preserving interpretation, compilation and partial evaluation. The approach is an alternative to the traditional, or `initial' encoding of an object language as a (generalized) algebraic data type. Both approaches permit multiple interpretations of an expression, to evaluate it, pretty-print, etc. The final encoding represents all and only typed object terms without resorting to generalized algebraic data types, dependent or other fancy types. The final encoding lets us add new language forms and interpretations without breaking the existing terms and interpreters.},
1355 pages = {130--174},
1356 booktitle = {Generic and Indexed Programming: International Spring School, {SSGIP} 2010, Oxford, {UK}, March 22-26, 2010, Revised Lectures},
1357 publisher = {Springer Berlin Heidelberg},
1358 author = {Kiselyov, Oleg},
1359 editor = {Gibbons, Jeremy},
1360 date = {2012},
1361 doi = {10.1007/978-3-642-32202-0_3},
1362 file = {Kiselyov - 2012 - Typed Tagless Final Interpreters.pdf:/home/mrl/.local/share/zotero/storage/9NBYZLRP/Kiselyov - 2012 - Typed Tagless Final Interpreters.pdf:application/pdf},
1363 }
1364
1365 @inproceedings{nocker_concurrent_1991,
1366 location = {Berlin, Heidelberg},
1367 title = {Concurrent clean},
1368 isbn = {978-3-540-47472-2},
1369 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.},
1370 pages = {202--219},
1371 booktitle = {{PARLE} '91 Parallel Architectures and Languages Europe},
1372 publisher = {Springer Berlin Heidelberg},
1373 author = {Nöcker, E. G. J. M. H. and Smetsers, J. E. W. and van Eekelen, M. C. J. D. and Plasmeijer, M. J.},
1374 editor = {Aarts, Emile H. L. and van Leeuwen, Jan and Rem, Martin},
1375 date = {1991},
1376 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},
1377 }
1378
1379 @inproceedings{staps_lazy_2019,
1380 location = {New York, {NY}, {USA}},
1381 title = {Lazy Interworking of Compiled and Interpreted Code for Sandboxing and Distributed Systems},
1382 isbn = {978-1-4503-7562-7},
1383 doi = {10.1145/3412932.3412941},
1384 series = {{IFL} '19},
1385 abstract = {More and more applications rely on the safe execution of code unknown at compile-time, for example in the implementation of web browsers and plugin systems. Furthermore, these applications usually require some form of communication between the added code and its embedder, and hence a communication channel must be set up in which values are serialized and deserialized. This paper shows that in a functional programming language we can solve these two problems at once, if we realize that the execution of extra code is nothing more than the deserialization of a value which happens to be a function. To demonstrate this, we describe the implementation of a serialization library for the language Clean, which internally uses an interpreter to evaluate added code in a separate, sandboxed environment. Remarkable is that despite the conceptual asymmetry between "host" and "interpreter", lazy interworking must be implemented in a highly symmetric fashion, much akin to distributed systems. The library interworks on a low level with the native Clean program, but has been implemented without any changes to the native runtime system. It can therefore easily be ported to other programming languages.We can use the same technique in the context of the web, where we want to be able to share possibly lazy values between a server and a client. In this case the interpreter runs in {WebAssembly} in the browser and communicates seamlessly with the server, written in Clean. We use this in the {iTasks} web framework to handle communication and offload computations to the client to reduce stress on the server-side. Previously, this framework cross-compiled the Clean source code to {JavaScript} and used {JSON} for communication. The interpreter has a more predictable and better performance, and integration is much simpler because it interworks on a lower level with the web server.},
1386 booktitle = {Proceedings of the 31st Symposium on Implementation and Application of Functional Languages},
1387 publisher = {{ACM}},
1388 author = {Staps, Camil and van Groningen, John and Plasmeijer, Rinus},
1389 date = {2019},
1390 note = {event-place: Singapore, Singapore},
1391 keywords = {functional programming, interpreters, laziness, sandboxing, web-assembly},
1392 file = {Staps et al. - 2019 - Lazy Interworking of Compiled and Interpreted Code.pdf:/home/mrl/.local/share/zotero/storage/LGS69CH8/Staps et al. - 2019 - Lazy Interworking of Compiled and Interpreted Code.pdf:application/pdf},
1393 }
1394
1395 @incollection{mernik_extensible_2013,
1396 location = {Hershey, {PA}, {USA}},
1397 title = {Extensible Languages: Blurring the Distinction between {DSL} and {GPL}},
1398 isbn = {978-1-4666-2092-6},
1399 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.},
1400 pages = {1--31},
1401 booktitle = {Formal and Practical Aspects of Domain-Specific Languages: Recent Developments},
1402 publisher = {{IGI} Global},
1403 author = {Verna, Didier},
1404 editor = {Mernik, Marjan},
1405 date = {2013},
1406 doi = {10.4018/978-1-4666-2092-6.ch001},
1407 }
1408
1409 @inproceedings{hudak_modular_1998,
1410 title = {Modular domain specific languages and tools},
1411 doi = {10.1109/ICSR.1998.685738},
1412 pages = {134--142},
1413 booktitle = {Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203)},
1414 author = {Hudak, P.},
1415 date = {1998},
1416 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},
1417 }
1418
1419 @book{fowler_domain_2010,
1420 edition = {1st},
1421 title = {Domain Specific Languages},
1422 isbn = {0-321-71294-3},
1423 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\#.},
1424 publisher = {Addison-Wesley Professional},
1425 author = {Fowler, Martin},
1426 date = {2010},
1427 file = {Fowler - 2010 - Domain-specific languages.pdf:/home/mrl/.local/share/zotero/storage/YYMYXTZ5/Fowler - 2010 - Domain-specific languages.pdf:application/pdf},
1428 }
1429
1430 @unpublished{lewis_speech_1985,
1431 location = {Washington, D.C.},
1432 title = {Speech},
1433 url = {http://www.chetansharma.com/correcting-the-iot-history/},
1434 type = {Speech},
1435 howpublished = {Speech},
1436 note = {Congressional Black Caucus Foundation 15th Annual Legislative Weekend},
1437 author = {Lewis, Peter T.},
1438 date = {1985-09},
1439 }
1440
1441 @article{weiser_computer_1991,
1442 title = {The Computer for the 21 st Century},
1443 volume = {265},
1444 pages = {94--105},
1445 number = {3},
1446 journaltitle = {Scientific American},
1447 author = {Weiser, Mark},
1448 date = {1991-09},
1449 langid = {english},
1450 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},
1451 }
1452
1453 @misc{evans_internet_2011,
1454 title = {The Internet of Things: How the Next Evolution of the Internet Is Changing Everything},
1455 url = {https://www.cisco.com/c/dam/en_us/about/ac79/docs/innov/IoT_IBSG_0411FINAL.pdf},
1456 publisher = {Cisco Internet Business Solutions Group ({IBSG})},
1457 author = {Evans, Dave},
1458 date = {2011-04},
1459 langid = {english},
1460 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},
1461 }
1462
1463 @inproceedings{ireland_classification_2009,
1464 location = {Cancun, Mexico},
1465 title = {A Classification of Object-Relational Impedance Mismatch},
1466 isbn = {978-0-7695-3550-0},
1467 doi = {10.1109/DBKDA.2009.11},
1468 eventtitle = {First International Conference on Advances in Databases, Knowledge, and Data Applications},
1469 pages = {36--43},
1470 booktitle = {First International Conference on Advances in Databases, Knowledge, and Data Applications},
1471 publisher = {{IEEE}},
1472 author = {Ireland, Christopher and Bowers, David and Newton, Michael and Waugh, Kevin},
1473 date = {2009},
1474 }
1475
1476 @inproceedings{steenvoorden_tophat_2019,
1477 location = {New York, {NY}, {USA}},
1478 title = {{TopHat}: A Formal Foundation for Task-Oriented Programming},
1479 isbn = {978-1-4503-7249-7},
1480 doi = {10.1145/3354166.3354182},
1481 series = {{PPDP} '19},
1482 abstract = {Software that models how people work is omnipresent in today's society. Current languages and frameworks often focus on usability by non-programmers, sacrificing flexibility and high level abstraction. Task-oriented programming ({TOP}) is a programming paradigm that aims to provide the desired level of abstraction while still being expressive enough to describe real world collaboration. It prescribes a declarative programming style to specify multi-user workflows. Workflows can be higher-order. They communicate through typed values on a local and global level. Such specifications can be turned into interactive applications for different platforms, supporting collaboration during execution. {TOP} has been around for more than a decade, in the forms of {iTasks} and {mTasks}, which are tailored for real-world usability. So far, it has not been given a formalisation which is suitable for formal reasoning.In this paper we give a description of the {TOP} paradigm and then decompose its rich features into elementary language elements, which makes them suitable for formal treatment. We use the simply typed lambda-calculus, extended with pairs and references, as a base language. On top of this language, we develop {TopHat}, a language for modular interactive workflows. We describe {TopHat} by means of a layered semantics. These layers consist of multiple big-step evaluations on expressions, and two labelled transition systems, handling user inputs.With {TopHat} we prepare a way to formally reason about {TOP} languages and programs. This approach allows for comparison with other work in the field. We have implemented the semantic rules of {TopHat} in Haskell, and the task layer on top of the {iTasks} framework. This shows that our approach is feasible, and lets us demonstrate the concepts by means of illustrative case studies. {TOP} has been applied in projects with the Dutch coast guard, tax office, and navy. Our work matters because formal program verification is important for mission-critical software, especially for systems with concurrency.},
1483 booktitle = {Proceedings of the 21st International Symposium on Principles and Practice of Declarative Programming},
1484 publisher = {{ACM}},
1485 author = {Steenvoorden, Tim and Naus, Nico and Klinik, Markus},
1486 date = {2019},
1487 note = {event-place: Porto, Portugal},
1488 file = {Steenvoorden et al. - 2019 - TopHat A Formal Foundation for Task-Oriented Prog.pdf:/home/mrl/.local/share/zotero/storage/E9W4WKZC/Steenvoorden et al. - 2019 - TopHat A Formal Foundation for Task-Oriented Prog.pdf:application/pdf},
1489 }
1490
1491 @incollection{koopman_type-safe_2019,
1492 location = {Cham},
1493 title = {Type-Safe Functions and Tasks in a Shallow Embedded {DSL} for Microprocessors},
1494 isbn = {978-3-030-28346-9},
1495 abstract = {The Internet of Things, {IoT}, brings us large amounts of connected computing devices that are equipped with dedicated sensors and actuators. These computing devices are typically driven by a cheap microprocessor system with a relatively slow processor and a very limited amount of memory. Due to the special input-output capabilities of {IoT} devices and their connections it is very attractive to execute (parts of) programs on these microcomputers.},
1496 pages = {283--340},
1497 booktitle = {Central European Functional Programming School: 6th Summer School, {CEFP} 2015, Budapest, Hungary, July 610, 2015, Revised Selected Papers},
1498 publisher = {Springer International Publishing},
1499 author = {Koopman, Pieter and Plasmeijer, Rinus},
1500 editor = {Zsók, Viktória and Porkoláb, Zoltán and Horváth, Zoltán},
1501 date = {2019},
1502 doi = {10.1007/978-3-030-28346-9_8},
1503 file = {Koopman and Plasmeijer - 2019 - Type-Safe Functions and Tasks in a Shallow Embedde.pdf:/home/mrl/.local/share/zotero/storage/UY2DY4EJ/Koopman and Plasmeijer - 2019 - Type-Safe Functions and Tasks in a Shallow Embedde.pdf:application/pdf},
1504 }
1505
1506 @report{cheney_first-class_2003,
1507 title = {First-class phantom types},
1508 url = {https://ecommons.cornell.edu/handle/1813/5614},
1509 number = {{TR}2003-1901},
1510 institution = {Cornell University},
1511 author = {Cheney, James and Hinze, Ralf},
1512 urldate = {2017-05-15},
1513 date = {2003},
1514 file = {Cheney and Hinze - 2003 - First-class phantom types.pdf:/home/mrl/.local/share/zotero/storage/IBKGCFG2/Cheney and Hinze - 2003 - First-class phantom types.pdf:application/pdf},
1515 }
1516
1517 @article{mitchell_abstract_1988,
1518 title = {Abstract Types Have Existential Type},
1519 volume = {10},
1520 issn = {0164-0925},
1521 doi = {10.1145/44501.45065},
1522 abstract = {Abstract data type declarations appear in typed programming languages like Ada, Alphard, {CLU} and {ML}. This form of declaration binds a list of identifiers to a type with associated operations, a composite “value” we call a data algebra. We use a second-order typed lambda calculus {SOL} to show how data algebras may be given types, passed as parameters, and returned as results of function calls. In the process, we discuss the semantics of abstract data type declarations and review a connection between typed programming languages and constructive logic.},
1523 pages = {470--502},
1524 number = {3},
1525 journaltitle = {{ACM} Trans. Program. Lang. Syst.},
1526 author = {Mitchell, John C. and Plotkin, Gordon D.},
1527 date = {1988-07},
1528 note = {Place: New York, {NY}, {USA}
1529 Publisher: {ACM}},
1530 file = {Mitchell and Plotkin - 1988 - Abstract types have existential type.pdf:/home/mrl/.local/share/zotero/storage/QXDE5H7C/Mitchell and Plotkin - 1988 - Abstract types have existential type.pdf:application/pdf},
1531 }
1532
1533 @inproceedings{baars_typing_2002,
1534 location = {New York, {NY}, {USA}},
1535 title = {Typing Dynamic Typing},
1536 isbn = {1-58113-487-8},
1537 doi = {10.1145/581478.581494},
1538 series = {{ICFP} '02},
1539 abstract = {Even when programming in a statically typed language we every now and then encounter statically untypable values; such values result from interpreting values or from communicating with the outside world. To cope with this problem most languages include some form of dynamic types. It may be that the core language has been explicitly extended with such a type, or that one is allowed to live dangerously by using functions like {unsafeCoerce}. We show how, by a careful use of existentially and universally quantified types, one may achievem the same effect, without extending the language with new or unsafe features. The techniques explained are universally applicable, provided the core language is expressive enough; this is the case for the common implementations of Haskell. The techniques are used in the description of a type checking compiler that, starting from an expression term, constructs a typed function representing the semantics of that expression. In this function the overhead associated with the type checking is only once being paid for; in this sense we have thus achieved static type checking.},
1540 pages = {157--166},
1541 booktitle = {Proceedings of the Seventh {ACM} {SIGPLAN} International Conference on Functional Programming},
1542 publisher = {{ACM}},
1543 author = {Baars, Arthur I. and Swierstra, S. Doaitse},
1544 date = {2002},
1545 note = {event-place: Pittsburgh, {PA}, {USA}},
1546 keywords = {coercions, dynamic typing, Haskell, Leibnitz' rule, quantified types, static typing, type equality, typed interpreters},
1547 file = {Baars and Swierstra - 2002 - Typing dynamic typing.pdf:/home/mrl/.local/share/zotero/storage/QSGVSTM4/Baars and Swierstra - 2002 - Typing dynamic typing.pdf:application/pdf},
1548 }
1549
1550 @inproceedings{young_adding_2021,
1551 location = {Berlin, Heidelberg},
1552 title = {On Adding Pattern Matching to Haskell-Based Deeply Embedded Domain Specific Languages},
1553 isbn = {978-3-030-67437-3},
1554 doi = {10.1007/978-3-030-67438-0_2},
1555 abstract = {Capturing control flow is the Achilles heel of Haskell-based deeply embedded domain specific languages. Rather than use the builtin control flow mechanisms, artificial control flow combinators are used instead. However, capturing traditional control flow in a deeply embedded domain specific language would support the writing of programs in a natural style by allowing the programmer to use the constructs that are already builtin to the base language, such as pattern matching and recursion. In this paper, we expand the capabilities of Haskell-based deep embeddings with a compiler extension for reifying conditionals and pattern matching. With this new support, the subset of Haskell that we use for expressing deeply embedded domain specific languages can be cleaner, Haskell-idiomatic, and more declarative in nature.},
1556 pages = {20--36},
1557 booktitle = {Practical Aspects of Declarative Languages: 23rd International Symposium, {PADL} 2021, Copenhagen, Denmark, January 18-19, 2021, Proceedings},
1558 publisher = {Springer-Verlag},
1559 author = {Young, David and Grebe, Mark and Gill, Andy},
1560 date = {2021},
1561 note = {event-place: Copenhagen, Denmark},
1562 file = {Young et al. - 2021 - On Adding Pattern Matching to Haskell-Based Deeply.pdf:/home/mrl/.local/share/zotero/storage/XRYWKWPT/Young et al. - 2021 - On Adding Pattern Matching to Haskell-Based Deeply.pdf:application/pdf},
1563 }
1564
1565 @incollection{hinze_generic_2003,
1566 location = {Berlin, Heidelberg},
1567 title = {Generic Haskell: Practice and Theory},
1568 isbn = {978-3-540-45191-4},
1569 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.},
1570 pages = {1--56},
1571 booktitle = {Generic Programming: Advanced Lectures},
1572 publisher = {Springer Berlin Heidelberg},
1573 author = {Hinze, Ralf and Jeuring, Johan},
1574 editor = {Backhouse, Roland and Gibbons, Jeremy},
1575 date = {2003},
1576 doi = {10.1007/978-3-540-45191-4_1},
1577 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},
1578 }
1579
1580 @article{alhirabi_security_2021,
1581 title = {Security and Privacy Requirements for the Internet of Things: A Survey},
1582 volume = {2},
1583 issn = {2691-1914},
1584 doi = {10.1145/3437537},
1585 abstract = {The design and development process for internet of things ({IoT}) applications is more complicated than that for desktop, mobile, or web applications. First, {IoT} applications require both software and hardware to work together across many different types of nodes with different capabilities under different conditions. Second, {IoT} application development involves different types of software engineers such as desktop, web, embedded, and mobile to work together. Furthermore, non-software engineering personnel such as business analysts are also involved in the design process. In addition to the complexity of having multiple software engineering specialists cooperating to merge different hardware and software components together, the development process requires different software and hardware stacks to be integrated together (e.g., different stacks from different companies such as Microsoft Azure and {IBM} Bluemix). Due to the above complexities, non-functional requirements (such as security and privacy, which are highly important in the context of the {IoT}) tend to be ignored or treated as though they are less important in the {IoT} application development process. This article reviews techniques, methods, and tools to support security and privacy requirements in existing non-{IoT} application designs, enabling their use and integration into {IoT} applications. This article primarily focuses on design notations, models, and languages that facilitate capturing non-functional requirements (i.e., security and privacy). Our goal is not only to analyse, compare, and consolidate the empirical research but also to appreciate their findings and discuss their applicability for the {IoT}.},
1586 number = {1},
1587 journaltitle = {{ACM} Trans. Internet Things},
1588 author = {Alhirabi, Nada and Rana, Omer and Perera, Charith},
1589 date = {2021-02},
1590 note = {Place: New York, {NY}, {USA}
1591 Publisher: {ACM}},
1592 keywords = {Internet of Things, design principles, non functional requirements, notation, software design tools, software engineering},
1593 file = {Alhirabi et al. - 2021 - Security and Privacy Requirements for the Internet.pdf:/home/mrl/.local/share/zotero/storage/7UN4IF62/Alhirabi et al. - 2021 - Security and Privacy Requirements for the Internet.pdf:text/html},
1594 }
1595
1596 @inproceedings{torrano_strictness_2005,
1597 location = {Bristol, {UK}},
1598 title = {Strictness Analysis and let-to-case Transformation using Template Haskell},
1599 volume = {6},
1600 isbn = {978-1-84150-176-5},
1601 series = {Trends in Functional Programming},
1602 pages = {429--442},
1603 booktitle = {Revised Selected Papers from the Sixth Symposium on Trends in Functional Programming, {TFP} 2005, Tallinn, Estonia, 23-24 September 2005},
1604 publisher = {Intellect},
1605 author = {Torrano, Carmen and Segura, Clara},
1606 editor = {Eekelen, Marko C. J. D. van},
1607 date = {2005},
1608 note = {event-place: Talinn, Estonia},
1609 file = {Torrano and Segura - Strictness Analysis and let-to-case Transformation.pdf:/home/mrl/.local/share/zotero/storage/RIYW9WFT/Torrano and Segura - Strictness Analysis and let-to-case Transformation.pdf:application/pdf},
1610 }
1611
1612 @inproceedings{polak_automatic_2006,
1613 location = {Bristol, {UK}},
1614 title = {Automatic Graphical User Interface Form Generation Using Template Haskell},
1615 volume = {7},
1616 isbn = {978-1-84150-188-8},
1617 series = {Trends in Functional Programming},
1618 pages = {1--11},
1619 booktitle = {Revised Selected Papers from the Seventh Symposium on Trends in Functional Programming, {TFP} 2006, Nottingham, United Kingdom, 19-21 April 2006},
1620 publisher = {Intellect},
1621 author = {Polak, Gracjan and Jarosz, Janusz},
1622 editor = {Nilsson, Henrik},
1623 date = {2006},
1624 note = {event-place: Nottingham, {UK}},
1625 file = {Polak and Jarosz - Automatic Graphical User Interface Form Generation.pdf:/home/mrl/.local/share/zotero/storage/8VK3D8JQ/Polak and Jarosz - Automatic Graphical User Interface Form Generation.pdf:application/pdf},
1626 }
1627
1628 @inproceedings{koopman_executable_2011,
1629 location = {Berlin, Heidelberg},
1630 title = {An Executable and Testable Semantics for {iTasks}},
1631 isbn = {978-3-642-24452-0},
1632 abstract = {The {iTask} system is an easy to use combinator library for specifying dynamic data dependent workflows in a very flexible way. The specified workflows are executed as a multi-user web-application. The implementation of the {iTask} system is fairly complicated. Hence we cannot use it for reasoning about the semantics of workflows in the {iTask} system. In this paper we define an executable semantics that specifies how workflows react on events generated by the workers executing them. The semantics is used to explain {iTask} and to reason about {iTask}. Based on this semantics we define a mathematical notion of equivalence of tasks and show how this equivalence for tasks can be approximated automatically. Advantages of this executable semantics are: it is easy to validate the semantics by interactive simulation; properties of the semantics can be tested by our model-based test system Gþinspace∀þinspacest. Gþinspace∀þinspacest can test a large number of properties within seconds. These tests appeared to be a good indication about the consistency of the specified semantics and equivalence relation for tasks. The automatic testing of properties was very helpful in the development of the semantics. The contribution of this paper is a semantics for {iTask} as well as the method used to construct this operational semantics.},
1633 pages = {212--232},
1634 booktitle = {Implementation and Application of Functional Languages},
1635 publisher = {Springer Berlin Heidelberg},
1636 author = {Koopman, Pieter and Plasmeijer, Rinus and Achten, Peter},
1637 editor = {Scholz, Sven-Bodo and Chitil, Olaf},
1638 date = {2011},
1639 file = {Koopman et al. - 2011 - An Executable and Testable Semantics for iTasks.pdf:/home/mrl/.local/share/zotero/storage/6LFA9MNU/Koopman et al. - 2011 - An Executable and Testable Semantics for iTasks.pdf:application/pdf},
1640 }
1641
1642 @thesis{antonova_mtask_2022,
1643 location = {Nijmegen},
1644 title = {{mTask} Semantics and its Comparison to {TopHat}},
1645 pagetotal = {60},
1646 institution = {Radboud University},
1647 type = {Bachelor's Thesis},
1648 author = {Antonova, Elina},
1649 date = {2022},
1650 langid = {english},
1651 file = {Crooijmans - 2021 - Reducing the Power Consumption of IoT Devices in T.pdf:/home/mrl/.local/share/zotero/storage/YIEQ97KK/Crooijmans - 2021 - Reducing the Power Consumption of IoT Devices in T.pdf:application/pdf},
1652 }
1653
1654 @inproceedings{lijnse_capturing_2011,
1655 location = {Lisbon, Portugal},
1656 title = {Capturing the Netherlands Coast Guard's {SAR} Workflow with {iTasks}},
1657 pages = {10},
1658 booktitle = {Proceedings of the 8th International {ISCRAM} Conference},
1659 author = {Lijnse, Bas and Nanne, Ruud and Jansen, Jan Martin and Plasmeijer, Rinus},
1660 date = {2011},
1661 langid = {english},
1662 file = {Lijnse et al. - 2011 - Capturing the Netherlands Coast Guard's SAR Workfl.pdf:/home/mrl/.local/share/zotero/storage/46DHR55I/Lijnse et al. - 2011 - Capturing the Netherlands Coast Guard's SAR Workfl.pdf:application/pdf},
1663 }
1664
1665 @letter{wadler_expression_1998,
1666 title = {The expression problem},
1667 url = {https://homepages.inf.ed.ac.uk/wadler/papers/expression/expression.txt},
1668 type = {E-mail},
1669 author = {Wadler, Philip},
1670 urldate = {2021-02-24},
1671 date = {1998-11-12},
1672 langid = {english},
1673 }
1674
1675 @inreference{margaret_deuter_rhapsody_2015,
1676 location = {Oxford},
1677 edition = {Ninth edition},
1678 title = {Rhapsody},
1679 booktitle = {Oxford Advanced Learner's Dictionary of Current English},
1680 publisher = {Oxford University Press},
1681 author = {{A S Hornby}},
1682 editor = {{Margaret Deuter} and {Jennifer Bradbery} and {Joanna Turnbull}},
1683 date = {2015},
1684 }
1685
1686 @inreference{wikipedia_contributors_rhapsody_2022,
1687 title = {Rhapsody (music) — Wikipedia, The Free Encyclopedia},
1688 url = {https://en.wikipedia.org/w/index.php?title=Rhapsody_(music)\&oldid=1068385257},
1689 booktitle = {Wikipedia},
1690 author = {{Wikipedia contributors}},
1691 urldate = {2022-09-06},
1692 date = {2022},
1693 note = {accessed on: 2022-09-06},
1694 }
1695
1696 @incollection{backus_introduction_1990,
1697 location = {{USA}},
1698 title = {An Introduction to the Programming Language {FL}},
1699 isbn = {0-201-17236-4},
1700 pages = {219--247},
1701 booktitle = {Research Topics in Functional Programming},
1702 publisher = {Addison-Wesley Longman Publishing Co., Inc.},
1703 author = {Backus, John and Williams, John H. and Wimmers, Edward L.},
1704 date = {1990},
1705 }
1706
1707 @article{achten_ins_1995,
1708 title = {The ins and outs of Clean I/O},
1709 volume = {5},
1710 doi = {10.1017/S0956796800001258},
1711 pages = {81--110},
1712 number = {1},
1713 journaltitle = {Journal of Functional Programming},
1714 author = {Achten, Peter and Plasmeijer, Rinus},
1715 date = {1995},
1716 note = {Publisher: Cambridge University Press},
1717 }
1718
1719 @inproceedings{peyton_jones_imperative_1993,
1720 location = {New York, {NY}, {USA}},
1721 title = {Imperative Functional Programming},
1722 isbn = {0-89791-560-7},
1723 doi = {10.1145/158511.158524},
1724 series = {{POPL} '93},
1725 abstract = {We present a new model, based on monads, for performing input/output in a non-strict, purely functional language. It is composable, extensible, efficient, requires no extensions to the type system, and extends smoothly to incorporate mixed-language working and in-place array updates.},
1726 pages = {71--84},
1727 booktitle = {Proceedings of the 20th {ACM} {SIGPLAN}-{SIGACT} Symposium on Principles of Programming Languages},
1728 publisher = {{ACM}},
1729 author = {Peyton Jones, Simon and Wadler, Philip},
1730 date = {1993},
1731 note = {event-place: Charleston, South Carolina, {USA}},
1732 file = {Peyton Jones and Wadler - 1993 - Imperative Functional Programming.pdf:/home/mrl/.local/share/zotero/storage/9DQ5V3N3/Peyton Jones and Wadler - 1993 - Imperative Functional Programming.pdf:application/pdf},
1733 }
1734
1735 @inproceedings{achten_high_1993,
1736 location = {London},
1737 title = {High Level Specification of I/O in Functional Languages},
1738 isbn = {978-1-4471-3215-8},
1739 abstract = {The interface with the outside world has always been one of the weakest points of functional languages. It is not easy to incorporate I/O without being allowed to do side-effects. Furthermore, functional languages allow redexes to be evaluated in any order while I/O generally has to be performed in a very specific order. In this paper we present a new solution for the I/O problem which we have incorporated in the language Concurrent Clean. Concurrent Clean offers a linear type system called Unique Types. It makes it possible to define functions with side-effects without violating the functional semantics. Now it is possible to change any object in the world in the way we wanted: e.g. arrays can be updated in-situ, arbitrary file manipulation is possible. We have used this powerful tool among others to create a library for window based I/O. Using an explicit environment passing scheme provides a high-level and elegant functional specification method for I/O, called Event I/O. Now the specification of I/O has become one of the strengths of functional languages: interactive programs written in Concurrent Clean are concise, easy to write and comprehend as well as efficient. The presented solution can in principle be applied for any other functional language as well provided that it actually uses graph rewriting semantics in the implementation.},
1740 pages = {1--17},
1741 booktitle = {Functional Programming, Glasgow 1992},
1742 publisher = {Springer London},
1743 author = {Achten, Peter and van Groningen, John and Plasmeijer, Rinus},
1744 editor = {Launchbury, John and Sansom, Patrick},
1745 date = {1993},
1746 file = {Achten et al. - 1993 - High Level Specification of IO in Functional Lang.pdf:/home/mrl/.local/share/zotero/storage/4QVH7AYC/Achten et al. - 1993 - High Level Specification of IO in Functional Lang.pdf:application/pdf},
1747 }
1748
1749 @inproceedings{pickering_staged_2020,
1750 location = {New York, {NY}, {USA}},
1751 title = {Staged Sums of Products},
1752 isbn = {978-1-4503-8050-8},
1753 doi = {10.1145/3406088.3409021},
1754 series = {Haskell 2020},
1755 abstract = {Generic programming libraries have historically traded efficiency in return for convenience, and the generics-sop library is no exception. It offers a simple, uniform, representation of all datatypes precisely as a sum of products, making it easy to write generic functions. We show how to finally make generics-sop fast through the use of staging with Typed Template Haskell.},
1756 pages = {122--135},
1757 booktitle = {Proceedings of the 13th {ACM} {SIGPLAN} International Symposium on Haskell},
1758 publisher = {{ACM}},
1759 author = {Pickering, Matthew and Löh, Andres and Wu, Nicolas},
1760 date = {2020},
1761 note = {event-place: Virtual Event, {USA}},
1762 keywords = {generic programming, staging},
1763 file = {Pickering et al. - 2020 - Staged Sums of Products.pdf:/home/mrl/.local/share/zotero/storage/Q6ZWX4YP/Pickering et al. - 2020 - Staged Sums of Products.pdf:application/pdf},
1764 }
1765
1766 @article{xie_staging_2022,
1767 title = {Staging with Class: A Specification for Typed Template Haskell},
1768 volume = {6},
1769 doi = {10.1145/3498723},
1770 abstract = {Multi-stage programming using typed code quotation is an established technique for writing optimizing code generators with strong type-safety guarantees. Unfortunately, quotation in Haskell interacts poorly with type classes, making it difficult to write robust multi-stage programs. We study this unsound interaction and propose a resolution, staged type class constraints, which we formalize in a source calculus $\lambda$⇒ that elaborates into an explicit core calculus F. We show type soundness of both calculi, establishing that well-typed, well-staged source programs always elaborate to well-typed, well-staged core programs, and prove beta and eta rules for code quotations. Our design allows programmers to incorporate type classes into multi-stage programs with confidence. Although motivated by Haskell, it is also suitable as a foundation for other languages that support both overloading and quotation.},
1771 issue = {{POPL}},
1772 journaltitle = {Proc. {ACM} Program. Lang.},
1773 author = {Xie, Ningning and Pickering, Matthew and Löh, Andres and Wu, Nicolas and Yallop, Jeremy and Wang, Meng},
1774 date = {2022-01},
1775 note = {Place: New York, {NY}, {USA}
1776 Publisher: {ACM}},
1777 keywords = {Staging, Type Classes, Typed Template Haskell},
1778 file = {Xie et al. - 2022 - Staging with Class A Specification for Typed Temp.pdf:/home/mrl/.local/share/zotero/storage/QGDB5YHR/Xie et al. - 2022 - Staging with Class A Specification for Typed Temp.pdf:application/pdf},
1779 }
1780
1781 @article{rhiger_type-safe_2009,
1782 title = {Type-safe pattern combinators},
1783 volume = {19},
1784 doi = {10.1017/S0956796808007089},
1785 pages = {145--156},
1786 number = {2},
1787 journaltitle = {Journal of Functional Programming},
1788 author = {Rhiger, Morten},
1789 date = {2009},
1790 note = {Publisher: Cambridge University Press},
1791 file = {RHIGER - 2009 - Type-safe pattern combinators.pdf:/home/mrl/.local/share/zotero/storage/D4N7PGBS/RHIGER - 2009 - Type-safe pattern combinators.pdf:application/pdf},
1792 }
1793
1794 @inproceedings{de_vries_true_2014,
1795 location = {New York, {NY}, {USA}},
1796 title = {True Sums of Products},
1797 isbn = {978-1-4503-3042-8},
1798 doi = {10.1145/2633628.2633634},
1799 series = {{WGP} '14},
1800 abstract = {We introduce the sum-of-products ({SOP}) view for datatype-generic programming (in Haskell). While many of the libraries that are commonly in use today represent datatypes as arbitrary combinations of binary sums and products, {SOP} reflects the structure of datatypes more faithfully: each datatype is a single n-ary sum, where each component of the sum is a single n-ary product. This representation turns out to be expressible accurately in {GHC} with today's extensions. The resulting list-like structure of datatypes allows for the definition of powerful high-level traversal combinators, which in turn encourage the definition of generic functions in a compositional and concise style. A major plus of the {SOP} view is that it allows to separate function-specific metadata from the main structural representation and recombining this information later.},
1801 pages = {83--94},
1802 booktitle = {Proceedings of the 10th {ACM} {SIGPLAN} Workshop on Generic Programming},
1803 publisher = {{ACM}},
1804 author = {de Vries, Edsko and Löh, Andres},
1805 date = {2014},
1806 note = {event-place: Gothenburg, Sweden},
1807 keywords = {lenses, datatype-generic programming, generic views, json, metadata, sums of products, universes},
1808 file = {de Vries and Löh - 2014 - True Sums of Products.pdf:/home/mrl/.local/share/zotero/storage/QHT5IPQA/de Vries and Löh - 2014 - True Sums of Products.pdf:application/pdf},
1809 }
1810
1811 @article{willis_staged_2020,
1812 title = {Staged Selective Parser Combinators},
1813 volume = {4},
1814 doi = {10.1145/3409002},
1815 abstract = {Parser combinators are a middle ground between the fine control of hand-rolled parsers and the high-level almost grammar-like appearance of parsers created via parser generators. They also promote a cleaner, compositional design for parsers. Historically, however, they cannot match the performance of their counterparts. This paper describes how to compile parser combinators into parsers of hand-written quality. This is done by leveraging the static information present in the grammar by representing it as a tree. However, in order to exploit this information, it will be necessary to drop support for monadic computation since this generates dynamic structure. Selective functors can help recover lost functionality in the absence of monads, and the parser tree can be partially evaluated with staging. This is implemented in a library called Parsley.},
1816 issue = {{ICFP}},
1817 journaltitle = {Proc. {ACM} Program. Lang.},
1818 author = {Willis, Jamie and Wu, Nicolas and Pickering, Matthew},
1819 date = {2020-08},
1820 note = {Place: New York, {NY}, {USA}
1821 Publisher: {ACM}},
1822 keywords = {combinators, meta-programming, parsers},
1823 file = {Willis et al. - 2020 - Staged Selective Parser Combinators.pdf:/home/mrl/.local/share/zotero/storage/RCD842QK/Willis et al. - 2020 - Staged Selective Parser Combinators.pdf:application/pdf},
1824 }
1825
1826 @inproceedings{pickering_multi-stage_2019,
1827 location = {New York, {NY}, {USA}},
1828 title = {Multi-Stage Programs in Context},
1829 isbn = {978-1-4503-6813-1},
1830 doi = {10.1145/3331545.3342597},
1831 series = {Haskell 2019},
1832 abstract = {Cross-stage persistence is an essential aspect of multi-stage programming that allows a value defined in one stage to be available in another. However, difficulty arises when implicit information held in types, type classes and implicit parameters needs to be persisted. Without a careful treatment of such implicit information—which are pervasive in Haskell—subtle yet avoidable bugs lurk beneath the surface. This paper demonstrates that in multi-stage programming care must be taken when representing quoted terms so that important implicit information is kept in context and not discarded. The approach is formalised with a type-system, and an implementation in {GHC} is presented that fixes problems of the previous incarnation.},
1833 pages = {71--84},
1834 booktitle = {Proceedings of the 12th {ACM} {SIGPLAN} International Symposium on Haskell},
1835 publisher = {{ACM}},
1836 author = {Pickering, Matthew and Wu, Nicolas and Kiss, Csongor},
1837 date = {2019},
1838 note = {event-place: Berlin, Germany},
1839 keywords = {metaprogramming, staging, implicits},
1840 file = {Pickering et al. - 2019 - Multi-Stage Programs in Context.pdf:/home/mrl/.local/share/zotero/storage/3EW7FM44/Pickering et al. - 2019 - Multi-Stage Programs in Context.pdf:application/pdf},
1841 }
1842
1843 @article{pickering_specification_2021,
1844 title = {A Specification for Typed Template Haskell},
1845 volume = {abs/2112.03653},
1846 doi = {10.48550/arXiv.2112.03653},
1847 journaltitle = {{CoRR}},
1848 author = {Pickering, Matthew and Löh, Andres and Wu, Nicolas},
1849 date = {2021},
1850 eprinttype = {arxiv},
1851 eprint = {2112.03653},
1852 file = {Pickering et al. - 2021 - A Specification for Typed Template Haskell.pdf:/home/mrl/.local/share/zotero/storage/YBTN4DLK/Pickering et al. - 2021 - A Specification for Typed Template Haskell.pdf:application/pdf},
1853 }
1854
1855 @book{steenvoorden_tophat_2022,
1856 location = {Nijmegen},
1857 title = {{TopHat}: Task-Oriented Programming with Style},
1858 isbn = {978-94-6458-595-7},
1859 shorttitle = {{TopHat}: {TOP} with Style},
1860 publisher = {{UB} Nijmegen},
1861 author = {Steenvoorden, Tim},
1862 date = {2022},
1863 file = {Steenvoorden - 2022 - TopHat Task-Oriented Programming with Style.pdf:/home/mrl/.local/share/zotero/storage/ZV8IT9J5/Steenvoorden - 2022 - TopHat Task-Oriented Programming with Style.pdf:application/pdf},
1864 }
1865
1866 @inproceedings{folmer_high-level_2022,
1867 location = {Cham},
1868 title = {High-Level Synthesis of Digital Circuits from Template Haskell and {SDF}-{AP}},
1869 isbn = {978-3-031-15074-6},
1870 abstract = {Functional languages as input specifications for {HLS}-tools allow to specify data dependencies but do not contain a notion of time nor execution order. In this paper, we propose a method to add this notion to the functional description using the dataflow model {SDF}-{AP}. {SDF}-{AP} consists of patterns that express consumption and production that we can use to enforce resource usage. We created an {HLS}-tool that can synthesize parallel hardware, both data and control path, based on the repetition, expressed in Higher-Order Functions, combined with specified {SDF}-{AP} patterns.},
1871 pages = {3--27},
1872 booktitle = {Embedded Computer Systems: Architectures, Modeling, and Simulation},
1873 publisher = {Springer International Publishing},
1874 author = {Folmer, H. H. and Groote, R. de and Bekooij, M. J. G.},
1875 editor = {Orailoglu, Alex and Reichenbach, Marc and Jung, Matthias},
1876 date = {2022},
1877 file = {Folmer et al. - 2022 - High-Level Synthesis of Digital Circuits from Temp.pdf:/home/mrl/.local/share/zotero/storage/5JSW6MAL/Folmer et al. - 2022 - High-Level Synthesis of Digital Circuits from Temp.pdf:application/pdf},
1878 }
1879
1880 @article{materzok_generating_2022,
1881 title = {Generating Circuits with Generators},
1882 volume = {6},
1883 doi = {10.1145/3549821},
1884 abstract = {The most widely used languages and methods used for designing digital hardware fall into two rough categories. One of them, register transfer level ({RTL}), requires specifying each and every component in the designed circuit. This gives the designer full control, but burdens the designer with many trivial details. The other, the high-level synthesis ({HLS}) method, allows the designer to abstract the details of hardware away and focus on the problem being solved. This method however cannot be used for a class of hardware design problems because the circuit's clock is also abstracted away. We present {YieldFSM}, a hardware description language that uses the generator abstraction to represent clock-level timing in a digital circuit. It represents a middle ground between the {RTL} and {HLS} approaches: the abstraction level is higher than in {RTL}, but thanks to explicit information about clock-level timing, it can be used in applications where {RTL} is traditionally used. We also present the {YieldFSM} compiler, which uses methods developed by the functional programming community – including continuation-passsing style translation and defunctionalization – to translate {YieldFSM} programs to Mealy machines. It is implemented using Template Haskell and the Clash functional hardware description language. We show that this approach leads to short and conceptually simple hardware descriptions.},
1885 issue = {{ICFP}},
1886 journaltitle = {Proc. {ACM} Program. Lang.},
1887 author = {Materzok, Marek},
1888 date = {2022-08},
1889 note = {Place: New York, {NY}, {USA}
1890 Publisher: {ACM}},
1891 keywords = {circuit synthesis, generators, hardware description languages},
1892 file = {Materzok - 2022 - Generating Circuits with Generators.pdf:/home/mrl/.local/share/zotero/storage/LH4Q8J73/Materzok - 2022 - Generating Circuits with Generators.pdf:application/pdf},
1893 }
1894
1895 @article{egi_embedding_2022,
1896 title = {Embedding Non-linear Pattern Matching with Backtracking for Non-free Data Types into Haskell},
1897 volume = {40},
1898 issn = {1882-7055},
1899 doi = {10.1007/s00354-022-00177-z},
1900 abstract = {Pattern matching is an important language construct for data abstraction. Many pattern-match extensions have been developed for extending the range of data types to which pattern matching is applicable. Among them, the pattern-match system proposed by Egi and Nishiwaki features practical pattern matching for non-free data types by providing a user-customizable non-linear pattern-match facility with backtracking. However, they implemented their proposal only in dynamically typed programming languages, and there were no proposals that allow programmers to benefit from both static type systems and expressive pattern matching. This paper proposes a method for implementing this pattern-match facility by meta-programming in Haskell. There are two technical challenges: (i) we need to design a set of typing rules for the pattern-match facility; (ii) we need to embed these typing rules in Haskell to make types of the pattern-match expressions inferable by the Haskell type system. We propose a set of typing rules and show that several {GHC} extensions, such as multi-parameter type classes, datatype promotion, {GADTs}, existential types, and view patterns, play essential roles for embedding these typing rules into Haskell. The implementation has already been distributed as a Haskell library {miniEgison} via Hackage.},
1901 pages = {481--506},
1902 number = {2},
1903 journaltitle = {New Generation Computing},
1904 shortjournal = {New Generation Computing},
1905 author = {Egi, Satoshi and Kawata, Akira and Kori, Mayuko and Ogawa, Hiromi},
1906 date = {2022-07-01},
1907 file = {Egi et al. - 2022 - Embedding Non-linear Pattern Matching with Backtra.pdf:/home/mrl/.local/share/zotero/storage/PXT9L9Z4/Egi et al. - 2022 - Embedding Non-linear Pattern Matching with Backtra.pdf:application/pdf},
1908 }
1909
1910 @inproceedings{blanchette_liquid_2022,
1911 location = {New York, {NY}, {USA}},
1912 title = {Liquid Proof Macros},
1913 isbn = {978-1-4503-9438-3},
1914 doi = {10.1145/3546189.3549921},
1915 series = {Haskell 2022},
1916 abstract = {Liquid Haskell is a popular verifier for Haskell programs, leveraging the power of {SMT} solvers to ease users' burden of proof. However, this power does not come without a price: convincing Liquid Haskell that a program is correct often necessitates giving hints to the underlying solver, which can be a tedious and verbose process that sometimes requires intricate knowledge of Liquid Haskell's inner workings. In this paper, we present Liquid Proof Macros, an extensible metaprogramming technique and framework for simplifying the development of Liquid Haskell proofs. We describe how to leverage Template Haskell to generate Liquid Haskell proof terms, via a tactic-inspired {DSL} interface for more concise and user-friendly proofs, and we demonstrate the capabilities of this framework by automating a wide variety of proofs from an existing Liquid Haskell benchmark.},
1917 pages = {27--38},
1918 booktitle = {Proceedings of the 15th {ACM} {SIGPLAN} International Haskell Symposium},
1919 publisher = {{ACM}},
1920 author = {Blanchette, Henry and Vazou, Niki and Lampropoulos, Leonidas},
1921 date = {2022},
1922 note = {event-place: Ljubljana, Slovenia},
1923 keywords = {Liquid Haskell, Proof Macros, Tactics},
1924 file = {Blanchette et al. - 2022 - Liquid Proof Macros.pdf:/home/mrl/.local/share/zotero/storage/YXPCWQNI/Blanchette et al. - 2022 - Liquid Proof Macros.pdf:application/pdf},
1925 }
1926
1927 @thesis{baaij_digital_2015,
1928 location = {Netherlands},
1929 title = {Digital circuit in {C$\lambda$aSH}: functional specifications and type-directed synthesis},
1930 abstract = {Over the last three decades, the number of transistors used in microchips has increased by three orders of magnitude, from millions to billions. The productivity of the designers, however, lags behind. Managing to implement complex algorithms, while keeping non-functional properties within desired bounds, and thoroughly verifying the design against its specification, are the main difficulties in circuit design. As a motivation for our work we make a qualitative analysis of the tools available to circuit designers. Here we see that progress has been slow, and that the same techniques have been used for over 20 years. We claim that functional languages can be used to raise the abstraction level in circuit design. Especially higher-order functional languages, where functions are first-class and can be manipulated by other functions, offer a single abstraction mechanism that can capture many design patterns. This thesis explores the idea of using the functional language Haskell directly as a hardware specification language, and move beyond the limitations of embedded languages. Additionally, we can use normal functions from existing Haskell libraries to model the behaviour of our circuits. This thesis describes the inner workings of our {C$\lambda$aSH} compiler, which translates the aforementioned circuit descriptions written in Haskell to low-level descriptions in {VHDL}. The challenge then becomes the reduction of the higher-level abstractions in the descriptions to a form where synthesis is feasible. This thesis describes a term rewrite system (with bound variables) to achieve this reduction. We prove that this term rewrite system always reduces a polymorphic, higher-order circuit description to a synthesisable variant. Even when descriptions use high-level abstractions, the {C$\lambda$aSH} compiler can synthesize efficient circuits. Case studies show that circuits designed in Haskell, and synthesized with the C?{aSH} compiler, are on par with hand-written {VHDL}, in both area and gate propagation delay. This thesis thus shows the merits of using a modern functional language for circuit design. The advanced type system and higher-order functions allow us to design circuits that have the desired property of being correct-by-construction. Finally, our synthesis approach enables us to derive efficient circuits from descriptions that use high-level abstractions.},
1931 institution = {University of Twente},
1932 type = {phdthesis},
1933 author = {Baaij, C. P. R.},
1934 date = {2015-01-23},
1935 doi = {10.3990/1.9789036538039},
1936 note = {{ISBN}: 978-90-365-3803-9},
1937 keywords = {Haskell, Digital Circuits, {EC} Grant Agreement nr.: {FP}7/248465, {EC} Grant Agreement nr.: {FP}7/610686, {EWI}-23939, {FPGA}, Functional Programming, Hardware, {IR}-93962, Lambda calculus, {METIS}-308711, Rewrite Systems},
1938 file = {Baaij - 2015 - Digital circuit in C$\lambda$aSH functional specification.pdf:/home/mrl/.local/share/zotero/storage/MYJ33ISL/Baaij - 2015 - Digital circuit in C$\lambda$aSH functional specification.pdf:application/pdf},
1939 }
1940
1941 @inproceedings{mcdonell_embedded_2022,
1942 location = {New York, {NY}, {USA}},
1943 title = {Embedded Pattern Matching},
1944 isbn = {978-1-4503-9438-3},
1945 doi = {10.1145/3546189.3549917},
1946 series = {Haskell 2022},
1947 abstract = {Haskell is a popular choice for hosting deeply embedded languages. A recurring challenge for these embeddings is how to seamlessly integrate user defined algebraic data types. In particular, one important, convenient, and expressive feature for creating and inspecting data—pattern matching—is not directly available on embedded terms. We present a novel technique, embedded pattern matching, which enables a natural and user friendly embedding of user defined algebraic data types into the embedded language, and allows programmers to pattern match on terms in the embedded language in much the same way they would in the host language.},
1948 pages = {123--136},
1949 booktitle = {Proceedings of the 15th {ACM} {SIGPLAN} International Haskell Symposium},
1950 publisher = {{ACM}},
1951 author = {{McDonell}, Trevor L. and Meredith, Joshua D. and Keller, Gabriele},
1952 date = {2022},
1953 note = {event-place: Ljubljana, Slovenia},
1954 keywords = {Haskell, algebraic data types, embedded languages, pattern matching},
1955 file = {2108.13114.pdf:/home/mrl/.local/share/zotero/storage/AJAT8AXI/2108.13114.pdf:application/pdf},
1956 }
1957
1958 @thesis{krishnamurthi_linguistic_2001,
1959 location = {Houston, {USA}},
1960 title = {Linguistic reuse},
1961 pagetotal = {119},
1962 institution = {Rice University},
1963 type = {phdthesis},
1964 author = {Krishnamurthi, Shriram},
1965 date = {2001},
1966 file = {Krishnamurthi - 2001 - Linguistic reuse.PDF:/home/mrl/.local/share/zotero/storage/LSKHFPIS/Krishnamurthi - 2001 - Linguistic reuse.PDF:application/pdf},
1967 }
1968
1969 @unpublished{ashton_internet_1999,
1970 location = {London, {UK}},
1971 title = {Internet of Things},
1972 type = {Presentation},
1973 howpublished = {Presentation},
1974 note = {Proctor \& Gamble},
1975 author = {Ashton, Kevin},
1976 date = {1999},
1977 }
1978
1979 @article{ashton_that_2009,
1980 title = {That ‘Internet of Things’ Thing},
1981 volume = {22},
1982 pages = {97--114},
1983 number = {7},
1984 journaltitle = {{RFID} journal},
1985 author = {Ashton, Kevin},
1986 date = {2009},
1987 note = {Publisher: Hauppauge, New York},
1988 file = {Ashton - 2009 - That ‘Internet of Things’ Thing.pdf:/home/mrl/.local/share/zotero/storage/SJ33G6VR/Ashton - 2009 - That ‘Internet of Things’ Thing.pdf:application/pdf},
1989 }
1990
1991 @thesis{van_gemert_task_2022,
1992 location = {Nijmegen},
1993 title = {Task Oriented Programming in {LUA}},
1994 pagetotal = {63},
1995 institution = {Radboud University},
1996 type = {Bachelor's Thesis},
1997 author = {van Gemert, Dante},
1998 date = {2022},
1999 langid = {english},
2000 file = {van Gemert - 2022 - Task Oriented Programming in LUA.pdf:/home/mrl/.local/share/zotero/storage/UQHAWT83/van Gemert - 2022 - Task Oriented Programming in LUA.pdf:application/pdf},
2001 }
2002
2003 @software{lijnse_toppyt_2022,
2004 title = {Toppyt},
2005 url = {https://gitlab.com/baslijnse/toppyt},
2006 author = {Lijnse, Bas},
2007 urldate = {2022-10-07},
2008 date = {2022},
2009 }
2010
2011 @article{kiselyov_implementing_2011,
2012 title = {Implementing Explicit and Finding Implicit Sharing in Embedded {DSLs}},
2013 volume = {66},
2014 doi = {10.4204/eptcs.66.11},
2015 pages = {210--225},
2016 journaltitle = {Electronic Proceedings in Theoretical Computer Science},
2017 author = {Kiselyov, Oleg},
2018 date = {2011-09},
2019 note = {Publisher: Open Publishing Association},
2020 }
2021
2022 @article{sun_compositional_2022,
2023 title = {Compositional Embeddings of Domain-Specific Languages},
2024 volume = {6},
2025 doi = {10.1145/3563294},
2026 pages = {34},
2027 issue = {{OOPSLA}2},
2028 journaltitle = {Proc. {ACM} Program. Lang.},
2029 author = {Sun, Yaozhu and Dhandhania, Utkarsh and Oliveira, Bruno C. d. S.},
2030 date = {2022},
2031 langid = {english},
2032 file = {Sun and Dhandhania - Compositional Embeddings of Domain-Specific Langua.pdf:/home/mrl/.local/share/zotero/storage/Y4GADQFP/Sun and Dhandhania - Compositional Embeddings of Domain-Specific Langua.pdf:application/pdf},
2033 }
2034
2035 @software{lubbers_htask_2022,
2036 title = {{hTask}},
2037 url = {https://gitlab.com/mlubbers/hTask},
2038 author = {Lubbers, Mart},
2039 urldate = {2022-10-07},
2040 date = {2022},
2041 }
2042
2043 @article{nizetic_internet_2020,
2044 title = {Internet of Things ({IoT}): Opportunities, issues and challenges towards a smart and sustainable future},
2045 volume = {274},
2046 issn = {0959-6526},
2047 doi = {https://doi.org/10.1016/j.jclepro.2020.122877},
2048 abstract = {The rapid development and implementation of smart and {IoT} (Internet of Things) based technologies have allowed for various possibilities in technological advancements for different aspects of life. The main goal of {IoT} technologies is to simplify processes in different fields, to ensure a better efficiency of systems (technologies or specific processes) and finally to improve life quality. Sustainability has become a key issue for population where the dynamic development of {IoT} technologies is bringing different useful benefits, but this fast development must be carefully monitored and evaluated from an environmental point of view to limit the presence of harmful impacts and ensure the smart utilization of limited global resources. Significant research efforts are needed in the previous sense to carefully investigate the pros and cons of {IoT} technologies. This review editorial is partially directed on the research contributions presented at the 4th International Conference on Smart and Sustainable Technologies held in Split and Bol, Croatia, in 2019 ({SpliTech} 2019) as well as on recent findings from literature. The {SpliTech}2019 conference was a valuable event that successfully linked different engineering professions, industrial experts and finally researchers from academia. The focus of the conference was directed towards key conference tracks such as Smart City, Energy/Environment, e-Health and Engineering Modelling. The research presented and discussed at the {SpliTech}2019 conference helped to understand the complex and intertwined effects of {IoT} technologies on societies and their potential effects on sustainability in general. Various application areas of {IoT} technologies were discussed as well as the progress made. Four main topical areas were discussed in the herein editorial, i.e. latest advancements in the further fields: (i) {IoT} technologies in Sustainable Energy and Environment, (ii) {IoT} enabled Smart City, (iii) E-health – Ambient assisted living systems (iv) {IoT} technologies in Transportation and Low Carbon Products. The main outcomes of the review introductory article contributed to the better understanding of current technological progress in {IoT} application areas as well as the environmental implications linked with the increased application of {IoT} products.},
2049 pages = {122877},
2050 journaltitle = {Journal of Cleaner Production},
2051 author = {Nižetić, Sandro and Šolić, Petar and González-de-Artaza, Diego López-de-Ipiña and Patrono, Luigi},
2052 date = {2020},
2053 keywords = {{IoT}, Energy, Environment, Smart city, {SpliTech}2020, Sustainability},
2054 }
2055
2056 @article{shi_edge_2016,
2057 title = {Edge Computing: Vision and Challenges},
2058 volume = {3},
2059 doi = {10.1109/JIOT.2016.2579198},
2060 pages = {637--646},
2061 number = {5},
2062 journaltitle = {{IEEE} Internet of Things Journal},
2063 author = {Shi, Weisong and Cao, Jie and Zhang, Quan and Li, Youhuizi and Xu, Lanyu},
2064 date = {2016},
2065 file = {Shi et al. - 2016 - Edge Computing Vision and Challenges.pdf:/home/mrl/.local/share/zotero/storage/3F2LDVWM/Shi et al. - 2016 - Edge Computing Vision and Challenges.pdf:application/pdf},
2066 }
2067
2068 @article{sanchez-iborra_tinyml-enabled_2020,
2069 title = {{TinyML}-Enabled Frugal Smart Objects: Challenges and Opportunities},
2070 volume = {20},
2071 doi = {10.1109/MCAS.2020.3005467},
2072 pages = {4--18},
2073 number = {3},
2074 journaltitle = {{IEEE} Circuits and Systems Magazine},
2075 author = {Sanchez-Iborra, Ramon and Skarmeta, Antonio F.},
2076 date = {2020},
2077 file = {Sanchez-Iborra and Skarmeta - 2020 - TinyML-Enabled Frugal Smart Objects Challenges an.pdf:/home/mrl/.local/share/zotero/storage/G5DKVFE4/Sanchez-Iborra and Skarmeta - 2020 - TinyML-Enabled Frugal Smart Objects Challenges an.pdf:application/pdf},
2078 }
2079
2080 @inproceedings{koopman_dynamic_2021,
2081 location = {Cham},
2082 title = {Dynamic Editors for Well-Typed Expressions},
2083 isbn = {978-3-030-83978-9},
2084 abstract = {Interactive systems may require complex inputs. Domain experts prefer guidance in the construction of these inputs. An ideal system prevents errors and is flexible in the construction and changes of its input. The {iTask} system generates web-editors given any first-order algebraic data types. The generated web-editors are useful but have their limitations. It is not possible to combine type safety with overloaded operators and preventing unbounded or ill-typed identifiers is impossible. Using phantom types, generalized algebraic datatypes or functions solves the language problems, but they cannot be handled by the datatype generic system. Moreover, changing expressions can require re-entering large parts of the input. We present dynamic editors that can solve all those problems. The programmer specifies the elements of such an editor by functions. The system shows the applicable edit elements in a drop-down menu to the user. The dynamic editor is used recursively to create the arguments for the selected function. Dynamic editors are seamlessly integrated with the ordinary web-editors of the {iTask} system. The obtained editors guide the users to make correct and type-safe inputs. These editors can be very flexible as well without making strange abstract syntax trees.},
2085 pages = {44--66},
2086 booktitle = {Trends in Functional Programming},
2087 publisher = {Springer International Publishing},
2088 author = {Koopman, Pieter and Michels, Steffen and Plasmeijer, Rinus},
2089 editor = {Zsók, Viktória and Hughes, John},
2090 date = {2021},
2091 file = {978-3-030-83978-9_3.pdf:/home/mrl/.local/share/zotero/storage/6654TJL7/978-3-030-83978-9_3.pdf:application/pdf},
2092 }
2093
2094 @inproceedings{omar_hazelnut_2017,
2095 location = {New York, {NY}, {USA}},
2096 title = {Hazelnut: A Bidirectionally Typed Structure Editor Calculus},
2097 isbn = {978-1-4503-4660-3},
2098 doi = {10.1145/3009837.3009900},
2099 series = {{POPL} '17},
2100 abstract = {Structure editors allow programmers to edit the tree structure of a program directly. This can have cognitive benefits, particularly for novice and end-user programmers. It also simplifies matters for tool designers, because they do not need to contend with malformed program text. This paper introduces Hazelnut, a structure editor based on a small bidirectionally typed lambda calculus extended with holes and a cursor. Hazelnut goes one step beyond syntactic well-formedness: its edit actions operate over statically meaningful incomplete terms. Naïvely, this would force the programmer to construct terms in a rigid "outside-in" manner. To avoid this problem, the action semantics automatically places terms assigned a type that is inconsistent with the expected type inside a hole. This meaningfully defers the type consistency check until the term inside the hole is finished. Hazelnut is not intended as an end-user tool itself. Instead, it serves as a foundational account of typed structure editing. To that end, we describe how Hazelnut's rich metatheory, which we have mechanized using the Agda proof assistant, serves as a guide when we extend the calculus to include binary sum types. We also discuss various interpretations of holes, and in so doing reveal connections with gradual typing and contextual modal type theory, the Curry-Howard interpretation of contextual modal logic. Finally, we discuss how Hazelnut's semantics lends itself to implementation as an event-based functional reactive program. Our simple reference implementation is written using js\_of\_ocaml.},
2101 pages = {86--99},
2102 booktitle = {Proceedings of the 44th {ACM} {SIGPLAN} Symposium on Principles of Programming Languages},
2103 publisher = {{ACM}},
2104 author = {Omar, Cyrus and Voysey, Ian and Hilton, Michael and Aldrich, Jonathan and Hammer, Matthew A.},
2105 date = {2017},
2106 note = {event-place: Paris, France},
2107 keywords = {bidirectional type systems, gradual typing, mechanized metatheory, structure editors},
2108 file = {Omar et al. - 2017 - Hazelnut A Bidirectionally Typed Structure Editor.pdf:/home/mrl/.local/share/zotero/storage/4DNRBZ4H/Omar et al. - 2017 - Hazelnut A Bidirectionally Typed Structure Editor.pdf:application/pdf},
2109 }
2110
2111 @article{hester_batteries_2019,
2112 title = {Batteries Not Included},
2113 volume = {26},
2114 issn = {1528-4972},
2115 doi = {10.1145/3351474},
2116 abstract = {Getting things done amid frequent power failures, batteryless intermittent research is rethinking how we build computing systems and paving the way to a sustainable and scalable digital future. The next trillion devices might be a little weird.},
2117 pages = {23--27},
2118 number = {1},
2119 journaltitle = {{XRDS}},
2120 author = {Hester, Josiah and Sorber, Jacob},
2121 date = {2019-09},
2122 note = {Place: New York, {NY}, {USA}
2123 Publisher: {ACM}},
2124 file = {Hester and Sorber - 2019 - Batteries Not Included.pdf:/home/mrl/.local/share/zotero/storage/LT53WV8K/Hester and Sorber - 2019 - Batteries Not Included.pdf:application/pdf},
2125 }
2126
2127 @incollection{management_association_evaluating_2014,
2128 location = {Hershey, {PA}, {USA}},
2129 title = {Evaluating the Usability of Domain-Specific Languages},
2130 isbn = {978-1-4666-4301-7},
2131 abstract = {Domain-Specific Languages ({DSLs}) can be regarded as User Interfaces ({UIs}) because they bridge the gap between the domain experts and the computation platforms. Usability of {DSLs} by domain experts is a key factor for their successful adoption. The few reports supporting improvement claims are persuasive, but mostly anecdotal. Systematic literature reviews show that evidences on the effects of the introduction of {DSLs} are actually very scarce. In particular, the evaluation of usability is often skipped, relaxed, or at least omitted from papers reporting the development of {DSLs}. The few exceptions mostly take place at the end of the development process, when fixing problems is already too expensive. A systematic approach, based on techniques for the experimental evaluation of {UIs}, should be used to assess suitability of new {DSLs}. This chapter presents a general experimental evaluation model, tailored for {DSLs}’ experimental evaluation, and instantiates it in several {DSL}’s evaluation examples.},
2132 pages = {2120--2141},
2133 booktitle = {Software Design and Development: Concepts, Methodologies, Tools, and Applications},
2134 publisher = {{IGI} Global},
2135 author = {Barišic, Ankica and Amaral, Vasco and Goulão, Miguel and Barroca, Bruno},
2136 editor = {Management Association, Information Resources},
2137 date = {2014},
2138 doi = {10.4018/978-1-4666-4301-7.ch098},
2139 file = {Barišic et al. - 2014 - Evaluating the Usability of Domain-Specific Langua.pdf:/home/mrl/.local/share/zotero/storage/ARTGSHZK/Barišic et al. - 2014 - Evaluating the Usability of Domain-Specific Langua.pdf:application/pdf},
2140 }
2141
2142 @article{van_der_aalst_workflow_2003,
2143 title = {Workflow Patterns},
2144 volume = {14},
2145 issn = {1573-7578},
2146 doi = {10.1023/A:1022883727209},
2147 abstract = {Differences in features supported by the various contemporary commercial workflow management systems point to different insights of suitability and different levels of expressive power. The challenge, which we undertake in this paper, is to systematically address workflow requirements, from basic to complex. Many of the more complex requirements identified, recur quite frequently in the analysis phases of workflow projects, however their implementation is uncertain in current products. Requirements for workflow languages are indicated through workflow patterns. In this context, patterns address business requirements in an imperative workflow style expression, but are removed from specific workflow languages. The paper describes a number of workflow patterns addressing what we believe identify comprehensive workflow functionality. These patterns provide the basis for an in-depth comparison of a number of commercially availablework flow management systems. As such, this paper can be seen as the academic response to evaluations made by prestigious consulting companies. Typically, these evaluations hardly consider the workflow modeling language and routing capabilities, and focus more on the purely technical and commercial aspects.},
2148 pages = {5--51},
2149 number = {1},
2150 journaltitle = {Distributed and Parallel Databases},
2151 shortjournal = {Distributed and Parallel Databases},
2152 author = {van der Aalst, W.M.P. and ter Hofstede, A.H.M. and Kiepuszewski, B. and Barros, A.P.},
2153 date = {2003-07-01},
2154 file = {van der Aalst et al. - 2003 - Workflow Patterns.pdf:/home/mrl/.local/share/zotero/storage/WXP2T4R7/van der Aalst et al. - 2003 - Workflow Patterns.pdf:application/pdf},
2155 }
2156
2157 @inproceedings{belwal_variable_2013,
2158 location = {New York, {NY}, {USA}},
2159 title = {Variable Voltage Scheduling with the Priority-Based Functional Reactive Programming Language},
2160 isbn = {978-1-4503-2348-2},
2161 doi = {10.1145/2513228.2513271},
2162 series = {{RACS} '13},
2163 abstract = {In this paper, we consider how energy consumption can be reduced in the Priority-based Functional Reactive Programming (P-{FRP}) execution model through the implementation of Dynamic Voltage and Frequency Scaling ({DVFS}), a technique for modifying circuit delays and altering the operating frequency of the {CPU}. Use of {DVFS} can have an impact on task execution time, which adversely affects the temporal guarantees required from the real-time scheduler. Most of the existing studies provide solutions which are suitable for the classical model of preemptive task scheduling. Tasks which are schedulable in the preemptive model cannot be guaranteed to be schedulable in P-{FRP}, since the abort-based preemptive approach often creates additional costs in terms of response times.},
2164 pages = {440--445},
2165 booktitle = {Proceedings of the 2013 Research in Adaptive and Convergent Systems},
2166 publisher = {{ACM}},
2167 author = {Belwal, Chaitanya and Cheng, Albert M. K. and Ras, J. and Wen, Yuanfeng},
2168 date = {2013},
2169 note = {event-place: Montreal, Quebec, Canada},
2170 keywords = {embedded system, real-time},
2171 }
2172
2173 @report{transforma_insights_current_2023,
2174 title = {Current {IoT} Forecast Highlights},
2175 url = {https://transformainsights.com/research/forecast/highlights},
2176 institution = {{Transforma Insights}},
2177 author = {{Transforma Insights}},
2178 urldate = {2023-01-16},
2179 date = {2023},
2180 note = {accessed-on: 2023-01-19},
2181 }
2182
2183 @software{top_software_viia_2023,
2184 title = {{VIIA} (Vessel Information Integrating Application)},
2185 url = {https://www.top-software.nl/VIIA.html},
2186 author = {{TOP} Software},
2187 urldate = {2023-02-06},
2188 date = {2023},
2189 }
2190
2191 @article{hinze_derivable_2001,
2192 title = {Derivable Type Classes},
2193 volume = {41},
2194 issn = {1571-0661},
2195 doi = {https://doi.org/10.1016/S1571-0661(05)80542-0},
2196 abstract = {Generic programming allows you to write a function once, and use it many times at different types. A lot of good foundational work on generic programming has been done. The goal of this paper is to propose a practical way of supporting generic programming within the Haskell language, without radically changing the language or its type system. The key idea is to present generic programming as a richer language in which to write default method definitions in a class declaration. On the way, we came across a separate issue, concerning type-class overloading where higher kinds are involved. We propose a simple type-class system extension to allow the programmer to write richer contexts than is currently possible.},
2197 pages = {5--35},
2198 number = {1},
2199 journaltitle = {Electronic Notes in Theoretical Computer Science},
2200 author = {Hinze, Ralf and Peyton Jones, Simon},
2201 date = {2001},
2202 file = {Hinze and Jones - 2001 - Derivable Type Classes.pdf:/home/mrl/.local/share/zotero/storage/33IF2HMZ/Hinze and Jones - 2001 - Derivable Type Classes.pdf:application/pdf},
2203 }