process rinus' comments
[phd-thesis.git] / bib / other.bib
1 @PREAMBLE{ {\providecommand{\noopsort}[1]{}} }
2 @inproceedings{suchocki_microscheme:_2015,
3 address = {Washington DC, USA},
4 series = {{CS} {Techreport} 718},
5 title = {Microscheme: {Functional} programming for the {Arduino}},
6 booktitle = {Proceedings of the 2014 {Scheme} and {Functional} {Programming} {Workshop}},
7 publisher = {University of Indiana},
8 author = {Suchocki, Ryan and Kalvala, Sara},
9 year = {2015},
10 pages = {9},
11 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},
12 }
13
14 @mastersthesis{crooijmans_reducing_2021,
15 address = {Nijmegen},
16 title = {Reducing the {Power} {Consumption} of {IoT} {Devices} in {Task}-{Oriented} {Programming}},
17 language = {en},
18 school = {Radboud University},
19 author = {Crooijmans, Sjoerd},
20 month = jul,
21 year = {2021},
22 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},
23 }
24
25 @inproceedings{plasmeijer_task-oriented_2012,
26 address = {New York, NY, USA},
27 series = {{PPDP} '12},
28 title = {Task-{Oriented} {Programming} in a {Pure} {Functional} {Language}},
29 isbn = {978-1-4503-1522-7},
30 doi = {10.1145/2370776.2370801},
31 abstract = {Task-Oriented Programming (TOP) is a novel programming paradigm for the construction of distributed systems where users work together on the internet. When multiple users collaborate, they need to interact with each other frequently. TOP supports the definition of tasks that react to the progress made by others. With TOP, complex multi-user interactions can be programmed in a declarative style just by defining the tasks that have to be accomplished, thus eliminating the need to worry about the implementation detail that commonly frustrates the development of applications for this domain. TOP builds on four core concepts: tasks that represent computations or work to do which have an observable value that may change over time, data sharing enabling tasks to observe each other while the work is in progress, generic type driven generation of user interaction, and special combinators for sequential and parallel task composition. The semantics of these core concepts is defined in this paper. As an example we present the iTask3 framework, which embeds TOP in the functional programming language Clean.},
32 booktitle = {Proceedings of the 14th {Symposium} on {Principles} and {Practice} of {Declarative} {Programming}},
33 publisher = {ACM},
34 author = {Plasmeijer, Rinus and Lijnse, Bas and Michels, Steffen and Achten, Peter and Koopman, Pieter},
35 year = {2012},
36 note = {event-place: Leuven, Belgium},
37 keywords = {clean, task-oriented programming},
38 pages = {195--206},
39 file = {103802.pdf:/home/mrl/.local/share/zotero/storage/ZE6A65AW/103802.pdf:application/pdf},
40 }
41
42 @inproceedings{brus_clean_1987,
43 address = {Berlin, Heidelberg},
44 title = {Clean — {A} language for functional graph rewriting},
45 isbn = {978-3-540-47879-9},
46 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.},
47 booktitle = {Functional {Programming} {Languages} and {Computer} {Architecture}},
48 publisher = {Springer Berlin Heidelberg},
49 author = {Brus, T. H. and {\noopsort{Eekelen}van Eekelen}, M. C. J. D. and {\noopsort{Leer}van Leer}, M. O. and Plasmeijer, M. J.},
50 editor = {Kahn, Gilles},
51 year = {1987},
52 pages = {364--384},
53 file = {brut87-Clean.ps.gz:/home/mrl/.local/share/zotero/storage/T2QATWIE/brut87-Clean.ps.gz:application/gzip},
54 }
55
56 @misc{bolingbroke_constraint_2011,
57 title = {Constraint {Kinds} for {GHC}},
58 url = {http://blog.omega-prime.co.uk/2011/09/10/constraint-kinds-for-ghc/},
59 urldate = {2021-06-09},
60 journal = {:: (Bloggable a) ={\textgreater} a -{\textgreater} IO ()},
61 author = {Bolingbroke, Max},
62 month = sep,
63 year = {2011},
64 file = {Constraint Kinds for GHC:/home/mrl/.local/share/zotero/storage/R6RL79K7/constraint-kinds-for-ghc.html:text/html},
65 }
66
67 @inproceedings{fegaras_revisiting_1996,
68 address = {New York, NY, USA},
69 series = {{POPL} '96},
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 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.},
74 booktitle = {Proceedings of the 23rd {ACM} {SIGPLAN}-{SIGACT} {Symposium} on {Principles} of {Programming} {Languages}},
75 publisher = {ACM},
76 author = {Fegaras, Leonidas and Sheard, Tim},
77 year = {1996},
78 note = {event-place: St. Petersburg Beach, Florida, USA},
79 pages = {284--294},
80 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},
81 }
82
83 @inproceedings{pfenning_higher-order_1988,
84 address = {New York, NY, USA},
85 series = {{PLDI} '88},
86 title = {Higher-{Order} {Abstract} {Syntax}},
87 isbn = {0-89791-269-1},
88 doi = {10.1145/53990.54010},
89 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.},
90 booktitle = {Proceedings of the {ACM} {SIGPLAN} 1988 {Conference} on {Programming} {Language} {Design} and {Implementation}},
91 publisher = {ACM},
92 author = {Pfenning, F. and Elliott, C.},
93 year = {1988},
94 note = {event-place: Atlanta, Georgia, USA},
95 pages = {199--208},
96 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},
97 }
98
99 @inproceedings{chlipala_parametric_2008,
100 address = {New York, NY, USA},
101 series = {{ICFP} '08},
102 title = {Parametric {Higher}-{Order} {Abstract} {Syntax} for {Mechanized} {Semantics}},
103 isbn = {978-1-59593-919-7},
104 doi = {10.1145/1411204.1411226},
105 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.},
106 booktitle = {Proceedings of the 13th {ACM} {SIGPLAN} {International} {Conference} on {Functional} {Programming}},
107 publisher = {ACM},
108 author = {Chlipala, Adam},
109 year = {2008},
110 note = {event-place: Victoria, BC, Canada},
111 keywords = {compiler verification, dependent types, interactive proof assistants, type-theoretic semantics},
112 pages = {143--156},
113 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},
114 }
115
116 @incollection{reynolds_user-defined_1978,
117 address = {New York, NY},
118 title = {User-{Defined} {Types} and {Procedural} {Data} {Structures} as {Complementary} {Approaches} to {Data} {Abstraction}},
119 isbn = {978-1-4612-6315-9},
120 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.},
121 booktitle = {Programming {Methodology}: {A} {Collection} of {Articles} by {Members} of {IFIP} {WG2}.3},
122 publisher = {Springer New York},
123 author = {Reynolds, John C.},
124 editor = {Gries, David},
125 year = {1978},
126 doi = {10.1007/978-1-4612-6315-9_22},
127 pages = {309--317},
128 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},
129 }
130
131 @misc{ghc_team_ghc_2021,
132 title = {{GHC} {User}’s {Guide} {Documentation}},
133 url = {https://downloads.haskell.org/~ghc/latest/docs/users_guide.pdf},
134 language = {English},
135 urldate = {2021-02-24},
136 publisher = {Release},
137 author = {{GHC Team}},
138 year = {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 language = {English},
146 urldate = {2021-02-24},
147 publisher = {Release},
148 author = {{GHC Team}},
149 year = {2021},
150 }
151
152 @inproceedings{jeuring_polytypic_1996,
153 address = {Berlin, Heidelberg},
154 title = {Polytypic programming},
155 isbn = {978-3-540-70639-7},
156 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.},
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 year = {1996},
162 pages = {68--114},
163 file = {Jeuring and Jansson - 1996 - Polytypic programming.pdf:/home/mrl/.local/share/zotero/storage/SLC4G2IT/Jeuring and Jansson - 1996 - Polytypic programming.pdf:application/pdf},
164 }
165
166 @book{peyton_jones_haskell_2003,
167 address = {Cambridge},
168 title = {Haskell 98 language and libraries: the revised report},
169 isbn = {0-521 826144},
170 publisher = {Cambridge University Press},
171 editor = {Peyton Jones, Simon},
172 year = {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 booktitle = {Proceedings of the {Latin} {American} {Informatic} {Conference} ({PANEL})},
179 publisher = {ITESM-CEM},
180 author = {L\"{a}ufer, Konstantin},
181 year = {1994},
182 note = {event-place: Monterrey, Mexico},
183 }
184
185 @techreport{hughes_restricted_1999,
186 address = {Paris},
187 title = {Restricted data types in {Haskell}},
188 number = {UU-CS-1999-28},
189 institution = {Department of Information and Computing Sciences, Utrecht University},
190 author = {Hughes, John},
191 year = {1999},
192 pages = {16},
193 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},
194 }
195
196 @article{najd_trees_2017,
197 title = {Trees that {Grow}},
198 volume = {23},
199 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.},
200 number = {1},
201 journal = {Journal of Universal Computer Science},
202 author = {Najd, Shayan and Peyton Jones, Simon},
203 month = jan,
204 year = {2017},
205 pages = {42--62},
206 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},
207 }
208
209 @inproceedings{loh_open_2006,
210 address = {New York, NY, USA},
211 series = {{PPDP} '06},
212 title = {Open {Data} {Types} and {Open} {Functions}},
213 isbn = {1-59593-388-3},
214 doi = {10.1145/1140335.1140352},
215 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},
216 booktitle = {Proceedings of the 8th {ACM} {SIGPLAN} {International} {Conference} on {Principles} and {Practice} of {Declarative} {Programming}},
217 publisher = {ACM},
218 author = {L\"{o}h, Andres and Hinze, Ralf},
219 year = {2006},
220 note = {event-place: Venice, Italy},
221 keywords = {expression problem, extensible data types, extensible exceptions, extensible functions, functional programming, generic programming, Haskell, mutually recursive modules},
222 pages = {133--144},
223 file = {OpenDatatypes.pdf:/home/mrl/.local/share/zotero/storage/NEP9GZ9N/OpenDatatypes.pdf:application/pdf},
224 }
225
226 @inproceedings{hutton_fold_1998,
227 address = {New York, NY, USA},
228 series = {{ICFP} '98},
229 title = {Fold and {Unfold} for {Program} {Semantics}},
230 isbn = {1-58113-024-4},
231 doi = {10.1145/289423.289457},
232 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.},
233 booktitle = {Proceedings of the {Third} {ACM} {SIGPLAN} {International} {Conference} on {Functional} {Programming}},
234 publisher = {ACM},
235 author = {Hutton, Graham},
236 year = {1998},
237 note = {event-place: Baltimore, Maryland, USA},
238 pages = {280--288},
239 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},
240 }
241
242 @article{abadi_dynamic_1991,
243 title = {Dynamic {Typing} in a {Statically} {Typed} {Language}},
244 volume = {13},
245 issn = {0164-0925},
246 doi = {10.1145/103135.103138},
247 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.},
248 number = {2},
249 journal = {ACM Trans. Program. Lang. Syst.},
250 author = {Abadi, Martín and Cardelli, Luca and Pierce, Benjamin and Plotkin, Gordon},
251 month = apr,
252 year = {1991},
253 note = {Place: New York, NY, USA
254 Publisher: ACM},
255 keywords = {theory},
256 pages = {237--268},
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 address = {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 booktitle = {Trends in {Functional} {Programming}},
267 publisher = {Springer Berlin Heidelberg},
268 author = {Svenningsson, Josef and Axelsson, Emil},
269 editor = {Loidl, Hans-Wolfgang and Peña, Ricardo},
270 year = {2013},
271 pages = {21--36},
272 file = {svenningsson2013combining.pdf:/home/mrl/.local/share/zotero/storage/NFBGZCZT/svenningsson2013combining.pdf:application/pdf},
273 }
274
275 @inproceedings{yorgey_giving_2012,
276 address = {New York, NY, USA},
277 series = {{TLDI} '12},
278 title = {Giving {Haskell} a {Promotion}},
279 isbn = {978-1-4503-1120-5},
280 doi = {10.1145/2103786.2103795},
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 booktitle = {Proceedings of the 8th {ACM} {SIGPLAN} {Workshop} on {Types} in {Language} {Design} and {Implementation}},
283 publisher = {ACM},
284 author = {Yorgey, Brent A. and Weirich, Stephanie and Cretin, Julien and Peyton Jones, Simon and Vytiniotis, Dimitrios and Magalh\~{a}es, Jos\'{e} Pedro},
285 year = {2012},
286 note = {event-place: Philadelphia, Pennsylvania, USA},
287 keywords = {haskell, kinds, polymorphism, promotion},
288 pages = {53--66},
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 address = {New York, NY, USA},
294 series = {Haskell '09},
295 title = {Unembedding {Domain}-{Specific} {Languages}},
296 isbn = {978-1-60558-508-6},
297 doi = {10.1145/1596638.1596644},
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 booktitle = {Proceedings of the 2nd {ACM} {SIGPLAN} {Symposium} on {Haskell}},
300 publisher = {ACM},
301 author = {Atkey, Robert and Lindley, Sam and Yallop, Jeremy},
302 year = {2009},
303 note = {event-place: Edinburgh, Scotland},
304 keywords = {domain-specific languages, higher-order abstract syntax, type classes, unembedding},
305 pages = {37--48},
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 address = {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 booktitle = {{ECOOP}'98{Object}-{Oriented} {Programming}},
315 publisher = {Springer Berlin Heidelberg},
316 author = {Krishnamurthi, Shriram and Felleisen, Matthias and Friedman, Daniel P.},
317 editor = {Jul, Eric},
318 year = {1998},
319 note = {event-place: Brussels, Belgium},
320 pages = {91--113},
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 address = {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 booktitle = {Central {European} {Functional} {Programming} {School}: 5th {Summer} {School}, {CEFP} 2013, {Cluj}-{Napoca}, {Romania}, {July} 8-20, 2013, {Revised} {Selected} {Papers}},
330 publisher = {Springer International Publishing},
331 author = {Gibbons, Jeremy},
332 editor = {Zs\'{o}k, Vikt\'{o}ria and Horv\'{a}th, Zolt\'{a}n and Csat\'{o}, Lehel},
333 year = {2015},
334 doi = {10.1007/978-3-319-15940-9_1},
335 pages = {1--28},
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 @mastersthesis{van_der_veen_mutable_2020,
340 address = {Nijmegen},
341 title = {Mutable {Collection} {Types} in {Shallow} {Embedded} {DSLs}},
342 language = {en},
343 school = {Radboud University},
344 author = {van der Veen, Erin},
345 month = jun,
346 year = {2020},
347 file = {thesis_final.pdf:/home/mrl/.local/share/zotero/storage/Y9QWGGB9/thesis_final.pdf:application/pdf},
348 }
349
350 @phdthesis{de_boer_secure_2020,
351 address = {Nijmegen},
352 type = {Bachelor's {Thesis}},
353 title = {Secure {Communication} {Channels} for the {mTask} {System}.},
354 language = {en},
355 school = {Radboud University},
356 author = {de Boer, Michel},
357 month = jun,
358 year = {2020},
359 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},
360 }
361
362 @phdthesis{vos_draadloze_2020,
363 address = {Den Helder},
364 type = {Bachelor's {Thesis}},
365 title = {Draadloze prestaties van de {Wemos} {D1} {Mini} {V3}},
366 language = {nl},
367 school = {Netherlandse Defensie Academie},
368 author = {Vos, W.F.T.},
369 year = {2020},
370 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},
371 }
372
373 @inproceedings{barendregt_towards_1987,
374 title = {Towards an intermediate language for graph rewriting},
375 volume = {1},
376 booktitle = {{PARLE}, {Parallel} {Architectures} and {Languages} {Europe}},
377 publisher = {Springer Verlag},
378 author = {Barendregt, H.P. and {\noopsort{Eekelen}van Eekelen}, M.C.J.D and Glauert, J.R.W. and Kennaway, J.R. and Plasmeijer, M.J. and Sleep, M.R.},
379 year = {1987},
380 pages = {159--174},
381 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},
382 }
383
384 @misc{johnson-davies_lisp_2020,
385 title = {Lisp for microcontrollers},
386 url = {https://ulisp.com},
387 urldate = {2020-02-14},
388 journal = {Lisp for microcontrollers},
389 author = {Johnson-Davies, David},
390 year = {2020},
391 }
392
393 @incollection{wang_maintaining_2018,
394 address = {Cham},
395 title = {Maintaining {Separation} of {Concerns} {Through} {Task} {Oriented} {Software} {Development}},
396 volume = {10788},
397 isbn = {978-3-319-89718-9 978-3-319-89719-6},
398 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.},
399 language = {en},
400 urldate = {2019-01-14},
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 year = {2018},
406 doi = {10.1007/978-3-319-89719-6},
407 pages = {19--38},
408 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},
409 }
410
411 @phdthesis{serrano_type_2018,
412 type = {{PhD} {Thesis}},
413 title = {Type {Error} {Customization} for {Embedded} {Domain}-{Specific} {Languages}},
414 school = {Utrecht University},
415 author = {Serrano, Alejandro},
416 year = {2018},
417 }
418
419 @inproceedings{steiner_firmata:_2009,
420 title = {Firmata: {Towards} {Making} {Microcontrollers} {Act} {Like} {Extensions} of the {Computer}.},
421 booktitle = {{NIME}},
422 author = {Steiner, Hans-Christoph},
423 year = {2009},
424 pages = {125--130},
425 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},
426 }
427
428 @article{sugihara_programming_2008,
429 title = {Programming models for sensor networks: {A} survey},
430 volume = {4},
431 issn = {15504859},
432 shorttitle = {Programming models for sensor networks},
433 url = {http://portal.acm.org/citation.cfm?doid=1340771.1340774},
434 doi = {10.1145/1340771.1340774},
435 language = {en},
436 number = {2},
437 urldate = {2019-11-01},
438 journal = {ACM Transactions on Sensor Networks},
439 author = {Sugihara, Ryo and Gupta, Rajesh K.},
440 month = mar,
441 year = {2008},
442 pages = {1--29},
443 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},
444 }
445
446 @article{dube_bit:_2000,
447 title = {{BIT}: {A} very compact {Scheme} system for embedded applications},
448 journal = {Proceedings of the Fourth Workshop on Scheme and Functional Programming},
449 author = {Dub\'{e}, Danny},
450 year = {2000},
451 file = {dube.ps:/home/mrl/.local/share/zotero/storage/RNG6V7HT/dube.ps:application/postscript},
452 }
453
454 @inproceedings{feeley_picbit:_2003,
455 title = {{PICBIT}: {A} {Scheme} system for the {PIC} microcontroller},
456 booktitle = {Proceedings of the {Fourth} {Workshop} on {Scheme} and {Functional} {Programming}},
457 publisher = {Citeseer},
458 author = {Feeley, Marc and Dub\'{e}, Danny},
459 year = {2003},
460 pages = {7--15},
461 }
462
463 @inproceedings{st-amour_picobit:_2009,
464 title = {{PICOBIT}: a compact scheme system for microcontrollers},
465 booktitle = {International {Symposium} on {Implementation} and {Application} of {Functional} {Languages}},
466 publisher = {Springer},
467 author = {St-Amour, Vincent and Feeley, Marc},
468 year = {2009},
469 pages = {1--17},
470 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},
471 }
472
473 @article{barendsen_uniqueness_1996,
474 title = {Uniqueness typing for functional languages with graph rewriting semantics},
475 volume = {6},
476 number = {6},
477 journal = {Mathematical structures in computer science},
478 author = {Barendsen, Erik and Smetsers, Sjaak},
479 year = {1996},
480 pages = {579--612},
481 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},
482 }
483
484 @incollection{bolderheij_mission-driven_2018,
485 title = {A {Mission}-{Driven} {C2} {Framework} for {Enabling} {Heterogeneous} {Collaboration}},
486 booktitle = {{NL} {ARMS} {Netherlands} {Annual} {Review} of {Military} {Studies} 2018},
487 publisher = {Springer},
488 author = {Bolderheij, F and Jansen, JM and Kool, AA and Stutterheim, J},
489 year = {2018},
490 pages = {107--130},
491 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},
492 }
493
494 @inproceedings{lijnse_itasks_2009,
495 title = {{iTasks} 2: {iTasks} for {End}-users},
496 booktitle = {International {Symposium} on {Implementation} and {Application} of {Functional} {Languages}},
497 publisher = {Springer},
498 author = {Lijnse, Bas and Plasmeijer, Rinus},
499 year = {2009},
500 pages = {36--54},
501 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},
502 }
503
504 @inproceedings{plasmeijer_conference_2006,
505 title = {A conference management system based on the {iData} toolkit},
506 booktitle = {Symposium on {Implementation} and {Application} of {Functional} {Languages}},
507 publisher = {Springer},
508 author = {Plasmeijer, Rinus and Achten, Peter},
509 year = {2006},
510 pages = {108--125},
511 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},
512 }
513
514 @inproceedings{jansen_towards_2010,
515 address = {Seattle, USA},
516 title = {Towards dynamic workflows for crisis management},
517 isbn = {978-972-49-2247-8},
518 booktitle = {7th {Proceedings} of the {International} {Conference} on {Information} {Systems} for {Crisis} {Response} and {Management}, {Seattle}, {WA}, {USA}, {May}, 2010.},
519 publisher = {Information Systems for Crisis Response and Management, ISCRAM},
520 author = {Jansen, Jan Martin and Lijnse, Bas and Plasmeijer, Rinus},
521 editor = {French, Simon and Tomaszewski, n and Zobel, Christopher},
522 year = {2010},
523 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},
524 }
525
526 @inproceedings{van_der_heijden_managing_2011,
527 title = {Managing {COPD} exacerbations with telemedicine},
528 booktitle = {Conference on {Artificial} {Intelligence} in {Medicine} in {Europe}},
529 publisher = {Springer},
530 author = {van der Heijden, Maarten and Lijnse, Bas and Lucas, Peter JF and Heijdra, Yvonne F and Schermer, Tjard RJ},
531 year = {2011},
532 pages = {169--178},
533 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},
534 }
535
536 @inproceedings{lijnse_incidone:_2012,
537 title = {Incidone: {A} task-oriented incident coordination tool},
538 volume = {12},
539 booktitle = {Proceedings of the 9th {International} {Conference} on {Information} {Systems} for {Crisis} {Response} and {Management}, {ISCRAM}},
540 author = {Lijnse, Bas and Jansen, Jan Martin and Plasmeijer, Rinus and {others}},
541 year = {2012},
542 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},
543 }
544
545 @inproceedings{santanna_safe_2013,
546 title = {Safe system-level concurrency on resource-constrained nodes},
547 booktitle = {Proceedings of the 11th {ACM} {Conference} on {Embedded} {Networked} {Sensor} {Systems}},
548 publisher = {ACM},
549 author = {Sant'Anna, Francisco and Rodriguez, Noemi and Ierusalimschy, Roberto and Landsiedel, Olaf and Tsigas, Philippas},
550 year = {2013},
551 pages = {11},
552 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},
553 }
554
555 @mastersthesis{bohm_asynchronous_2019,
556 address = {Nijmegen},
557 title = {Asynchronous {Actions} in a {Synchronous} {World}},
558 abstract = {This thesis introduces a system for asynchronous communication in the iTasks framework. The
559 framework is written in Clean, a pure, lazy, functional language. Tasks need to be able to access
560 data in the system and retrieve data from all kinds of data sources. The share system allows
561 tasks to read arbitrary data sources and provides a simple interface that allows composition of
562 different data sources. This system allows tasks to share and store data in an efficient, re-usable
563 way.
564 A disadvantage of the share system is that it does not allow asynchronous evaluation. When
565 one task is using a share, other tasks have to wait for the full evaluation of this share before they
566 can be evaluated. This has the effect that users in the iTasks framework must wait on other
567 users. This results in poor user experience.
568 We implement a share system which, by way of share rewriting, allows asynchronous evalua-
569 tion. The system can be used to communicate with arbitrary services on the internet, as well as
570 to communicate between different iTasks servers in a distributed context.
571 We show how asynchronous shares are implemented and what the limitations are. We also
572 show multiple practical examples of using asynchronous shares. The new system can be effectively
573 used to consume services on the internet. It fits nicely into existing iTasks programs and requires
574 few changes in existing programs.},
575 language = {en},
576 school = {Radboud University},
577 author = {B\"{o}hm, Haye},
578 month = jan,
579 year = {2019},
580 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},
581 }
582
583 @inproceedings{hentschel_supersensors:_2016,
584 address = {Vienna, Austria},
585 title = {Supersensors: {Raspberry} {Pi} {Devices} for {Smart} {Campus} {Infrastructure}},
586 isbn = {978-1-5090-4052-0},
587 shorttitle = {Supersensors},
588 doi = {10.1109/FiCloud.2016.16},
589 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.},
590 language = {en},
591 urldate = {2019-09-04},
592 booktitle = {2016 {IEEE} 4th {International} {Conference} on {Future} {Internet} of {Things} and {Cloud} ({FiCloud})},
593 publisher = {IEEE},
594 author = {Hentschel, Kristian and Jacob, Dejice and Singer, Jeremy and Chalmers, Matthew},
595 month = aug,
596 year = {2016},
597 pages = {58--62},
598 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},
599 }
600
601 @inproceedings{feijs_multi-tasking_2013,
602 address = {Wuxi, China},
603 title = {Multi-tasking and {Arduino} : why and how?},
604 isbn = {978-90-386-3462-3},
605 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.},
606 language = {English},
607 booktitle = {8th {International} {Conference} on {Design} and {Semantics} of {Form} and {Movement} ({DeSForM} 2013)},
608 author = {Feijs, Loe},
609 editor = {Chen, L. L. and Djajadiningrat, T. and Feijs, L. M. G. and Fraser, S. and Hu, J. and Kyffin, S. and Steffen, D.},
610 year = {2013},
611 pages = {119--127},
612 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},
613 }
614
615 @article{haenisch_case_2016,
616 title = {A case study on using functional programming for internet of things applications},
617 volume = {3},
618 number = {1},
619 journal = {Athens Journal of Technology \& Engineering},
620 author = {Haenisch, Till},
621 year = {2016},
622 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},
623 }
624
625 @misc{achten_clean_2007,
626 title = {Clean for {Haskell98} {Programmers}},
627 url = {https://www.mbsd.cs.ru.nl/publications/papers/2007/achp2007-CleanHaskellQuickGuide.pdf},
628 language = {en},
629 author = {Achten, Peter},
630 month = jul,
631 year = {2007},
632 file = {Achten - Clean for Haskell98 Programmers.pdf:/home/mrl/.local/share/zotero/storage/69WWSGLF/Achten - Clean for Haskell98 Programmers.pdf:application/pdf},
633 }
634
635 @inproceedings{grebe_threading_2019,
636 address = {Cham},
637 title = {Threading the {Arduino} with {Haskell}},
638 isbn = {978-3-030-14805-8},
639 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.},
640 booktitle = {Trends in {Functional} {Programming}},
641 publisher = {Springer International Publishing},
642 author = {Grebe, Mark and Gill, Andy},
643 editor = {Van Horn, David and Hughes, John},
644 year = {2019},
645 pages = {135--154},
646 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},
647 }
648
649 @inproceedings{baccelli_reprogramming_2018,
650 title = {Reprogramming {Low}-end {IoT} {Devices} from the {Cloud}},
651 booktitle = {2018 3rd {Cloudification} of the {Internet} of {Things} ({CIoT})},
652 publisher = {IEEE},
653 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},
654 year = {2018},
655 pages = {1--6},
656 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},
657 }
658
659 @phdthesis{alimarine_generic_2005,
660 address = {Nijmegen},
661 type = {{PhD} {Thesis}},
662 title = {Generic {Functional} {Programming}},
663 language = {en},
664 school = {Radboud University},
665 author = {Alimarine, Artem},
666 year = {2005},
667 file = {Alimarine - Generic Functional Programming.pdf:/home/mrl/.local/share/zotero/storage/L4THNJHB/Alimarine - Generic Functional Programming.pdf:application/pdf},
668 }
669
670 @inproceedings{wand_continuation-based_1980,
671 address = {Stanford University, California, United States},
672 title = {Continuation-based multiprocessing},
673 doi = {10.1145/800087.802786},
674 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.},
675 language = {en},
676 urldate = {2019-02-13},
677 booktitle = {Proceedings of the 1980 {ACM} conference on {LISP} and functional programming - {LFP} '80},
678 publisher = {ACM Press},
679 author = {Wand, Mitchell},
680 year = {1980},
681 pages = {19--28},
682 file = {Wand - 1980 - Continuation-based multiprocessing.pdf:/home/mrl/.local/share/zotero/storage/XF4Z2R9S/Wand - 1980 - Continuation-based multiprocessing.pdf:application/pdf},
683 }
684
685 @inproceedings{elliott_functional_1997,
686 title = {Functional reactive animation},
687 volume = {32},
688 booktitle = {{ACM} {SIGPLAN} {Notices}},
689 publisher = {ACM},
690 author = {Elliott, Conal and Hudak, Paul},
691 year = {1997},
692 pages = {263--273},
693 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},
694 }
695
696 @mastersthesis{piers_task-oriented_2016,
697 address = {Nijmegen},
698 title = {Task-{Oriented} {Programming} for developing non-distributed interruptible embedded systems},
699 language = {en},
700 school = {Radboud University},
701 author = {Piers, Jasper},
702 year = {2016},
703 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},
704 }
705
706 @inproceedings{baccelli_scripting_2018,
707 title = {Scripting {Over}-{The}-{Air}: {Towards} {Containers} on {Low}-end {Devices} in the {Internet} of {Things}},
708 booktitle = {{IEEE} {PerCom} 2018},
709 author = {Baccelli, Emmanuel and Doerr, Joerg and Kikuchi, Shinji and Padilla, Francisco and Schleiser, Kaspar and Thomas, Ian},
710 year = {2018},
711 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},
712 }
713
714 @mastersthesis{amazonas_cabral_de_andrade_developing_2018,
715 address = {Nijmegen},
716 title = {Developing {Real} {Life}, {Task} {Oriented} {Applications} for the {Internet} of {Things}},
717 shorttitle = {Developing {Real} {Life}, {TOP} {Applications} for the {IOT}},
718 language = {en},
719 school = {Radboud University},
720 author = {Amazonas Cabral de Andrade, Matheus},
721 year = {2018},
722 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},
723 }
724
725 @article{swierstra_data_2008,
726 title = {Data types à la carte},
727 volume = {18},
728 doi = {10.1017/S0956796808006758},
729 number = {4},
730 journal = {Journal of functional programming},
731 author = {Swierstra, Wouter},
732 year = {2008},
733 pages = {423--436},
734 file = {swierstra2008.pdf:/home/mrl/.local/share/zotero/storage/BEQKBXWP/swierstra2008.pdf:application/pdf},
735 }
736
737 @article{van_groningen_exchanging_2010,
738 title = {Exchanging sources between {Clean} and {Haskell}: {A} double-edged front end for the {Clean} compiler},
739 volume = {45},
740 shorttitle = {Exchanging sources between {Clean} and {Haskell}},
741 number = {11},
742 journal = {ACM Sigplan Notices},
743 author = {{\noopsort{Groningen}van Groningen}, John and {\noopsort{Noort}van Noort}, Thomas and Achten, Peter and Koopman, Pieter and Plasmeijer, Rinus},
744 year = {2010},
745 pages = {49--60},
746 file = {groj10-Haskell_front_end_Clean.pdf:/home/mrl/.local/share/zotero/storage/WVZWX8WT/groj10-Haskell_front_end_Clean.pdf:application/pdf},
747 }
748
749 @inproceedings{grebe_haskino:_2016,
750 title = {Haskino: {A} remote monad for programming the arduino},
751 shorttitle = {Haskino},
752 booktitle = {International {Symposium} on {Practical} {Aspects} of {Declarative} {Languages}},
753 publisher = {Springer},
754 author = {Grebe, Mark and Gill, Andy},
755 year = {2016},
756 pages = {153--168},
757 file = {Grebe-16-Haskino.pdf:/home/mrl/.local/share/zotero/storage/ABG7TTLV/Grebe-16-Haskino.pdf:application/pdf},
758 }
759
760 @article{plasmeijer_itasks:_2007,
761 title = {{iTasks}: executable specifications of interactive work flow systems for the web},
762 volume = {42},
763 number = {9},
764 journal = {ACM SIGPLAN Notices},
765 author = {Plasmeijer, Rinus and Achten, Peter and Koopman, Pieter},
766 year = {2007},
767 pages = {141--152},
768 file = {plar2007-ICFP07-iTasks.pdf:/home/mrl/.local/share/zotero/storage/N8EUZP7D/plar2007-ICFP07-iTasks.pdf:application/pdf},
769 }
770
771 @incollection{plasmeijer_shallow_2016,
772 address = {Cham},
773 series = {Lecture {Notes} in {Computer} {Science}},
774 title = {A {Shallow} {Embedded} {Type} {Safe} {Extendable} {DSL} for the {Arduino}},
775 volume = {9547},
776 isbn = {978-3-319-39110-6},
777 urldate = {2017-02-22},
778 booktitle = {Trends in {Functional} {Programming}},
779 publisher = {Springer International Publishing},
780 author = {Plasmeijer, Rinus and Koopman, Pieter},
781 year = {2016},
782 doi = {10.1007/978-3-319-39110-6},
783 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},
784 }
785
786 @inproceedings{cheney_lightweight_2002,
787 title = {A lightweight implementation of generics and dynamics},
788 doi = {10.1145/581690.581698},
789 urldate = {2017-05-15},
790 booktitle = {Proceedings of the 2002 {ACM} {SIGPLAN} workshop on {Haskell}},
791 publisher = {ACM},
792 author = {Cheney, James and Hinze, Ralf},
793 year = {2002},
794 note = {event-place: Pittsburgh Pennsylvania, USA},
795 keywords = {dynamic typing, generic programming, type representations},
796 pages = {90--104},
797 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},
798 }
799
800 @article{lilis_survey_2019,
801 title = {A {Survey} of {Metaprogramming} {Languages}},
802 volume = {52},
803 issn = {0360-0300},
804 doi = {10.1145/3354584},
805 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.},
806 number = {6},
807 journal = {ACM Comput. Surv.},
808 author = {Lilis, Yannis and Savidis, Anthony},
809 month = oct,
810 year = {2019},
811 note = {Place: New York, NY, USA
812 Publisher: ACM},
813 keywords = {aspect-oriented programming, generative programming, macro systems, meta-object protocols, Metaprogramming, multistage languages, reflection},
814 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},
815 }
816
817 @inproceedings{mainland_why_2007,
818 address = {New York, NY, USA},
819 series = {Haskell '07},
820 title = {Why {It}'s {Nice} to {Be} {Quoted}: {Quasiquoting} for {Haskell}},
821 isbn = {978-1-59593-674-5},
822 doi = {10.1145/1291201.1291211},
823 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.},
824 booktitle = {Proceedings of the {ACM} {SIGPLAN} {Workshop} on {Haskell} {Workshop}},
825 publisher = {ACM},
826 author = {Mainland, Geoffrey},
827 year = {2007},
828 note = {event-place: Freiburg, Germany},
829 keywords = {meta programming, quasiquoting},
830 pages = {73--82},
831 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},
832 }
833
834 @article{tratt_domain_2008,
835 title = {Domain {Specific} {Language} {Implementation} via {Compile}-{Time} {Meta}-{Programming}},
836 volume = {30},
837 issn = {0164-0925},
838 doi = {10.1145/1391956.1391958},
839 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.},
840 number = {6},
841 journal = {ACM Trans. Program. Lang. Syst.},
842 author = {Tratt, Laurence},
843 month = oct,
844 year = {2008},
845 note = {Place: New York, NY, USA
846 Publisher: ACM},
847 keywords = {compile-time meta-programming, domain specific languages, Syntax extension},
848 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},
849 }
850
851 @inproceedings{kariotis_making_2008,
852 address = {New York, NY, USA},
853 series = {Haskell '08},
854 title = {Making {Monads} {First}-{Class} with {Template} {Haskell}},
855 isbn = {978-1-60558-064-7},
856 doi = {10.1145/1411286.1411300},
857 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.},
858 booktitle = {Proceedings of the {First} {ACM} {SIGPLAN} {Symposium} on {Haskell}},
859 publisher = {ACM},
860 author = {Kariotis, Pericles S. and Procter, Adam M. and Harrison, William L.},
861 year = {2008},
862 note = {event-place: Victoria, BC, Canada},
863 keywords = {domain-specific languages, monads, staged programming},
864 pages = {99--110},
865 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},
866 }
867
868 @inproceedings{gill_haskell_2009,
869 address = {Berlin, Heidelberg},
870 title = {A {Haskell} {Hosted} {DSL} for {Writing} {Transformation} {Systems}},
871 isbn = {978-3-642-03034-5},
872 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.},
873 booktitle = {Domain-{Specific} {Languages}},
874 publisher = {Springer Berlin Heidelberg},
875 author = {Gill, Andy},
876 editor = {Taha, Walid Mohamed},
877 year = {2009},
878 pages = {285--309},
879 file = {Gill2009_Chapter_AHaskellHostedDSLForWritingTra.pdf:/home/mrl/.local/share/zotero/storage/I9RJNDYR/Gill2009_Chapter_AHaskellHostedDSLForWritingTra.pdf:application/pdf},
880 }
881
882 @book{peyton_jones_implementation_1987,
883 address = {Hertfordshire},
884 title = {The {Implementation} of {Functional} {Programming} {Languages}},
885 url = {https://www.microsoft.com/en-us/research/publication/the-implementation-of-functional-programming-languages/},
886 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".},
887 publisher = {Prentice Hall},
888 author = {Peyton Jones, Simon},
889 month = jan,
890 year = {1987},
891 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},
892 }
893
894 @inproceedings{sheard_template_2002,
895 address = {New York, NY, USA},
896 series = {Haskell '02},
897 title = {Template {Meta}-{Programming} for {Haskell}},
898 isbn = {1-58113-605-6},
899 doi = {10.1145/581690.581691},
900 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.},
901 booktitle = {Proceedings of the 2002 {ACM} {SIGPLAN} {Workshop} on {Haskell}},
902 publisher = {ACM},
903 author = {Sheard, Tim and Peyton Jones, Simon},
904 year = {2002},
905 note = {event-place: Pittsburgh, Pennsylvania},
906 keywords = {meta programming, templates},
907 pages = {1--16},
908 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},
909 }
910
911 @inproceedings{seefried_optimising_2004,
912 address = {Berlin, Heidelberg},
913 title = {Optimising {Embedded} {DSLs} {Using} {Template} {Haskell}},
914 isbn = {978-3-540-30175-2},
915 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.},
916 booktitle = {Generative {Programming} and {Component} {Engineering}},
917 publisher = {Springer Berlin Heidelberg},
918 author = {Seefried, Sean and Chakravarty, Manuel and Keller, Gabriele},
919 editor = {Karsai, Gabor and Visser, Eelco},
920 year = {2004},
921 pages = {186--205},
922 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},
923 }
924
925 @article{hammond_automatic_2003,
926 title = {Automatic {Skeletons} in {Template} {Haskell}},
927 volume = {13},
928 doi = {10.1142/S0129626403001380},
929 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.},
930 number = {03},
931 journal = {Parallel Processing Letters},
932 author = {Hammond, Kevin and Berthold, Jost and Loogen, Rita},
933 year = {2003},
934 pages = {413--424},
935 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},
936 }
937
938 @inproceedings{adams_template_2012,
939 address = {New York, NY, USA},
940 series = {Haskell '12},
941 title = {Template {Your} {Boilerplate}: {Using} {Template} {Haskell} for {Efficient} {Generic} {Programming}},
942 isbn = {978-1-4503-1574-6},
943 doi = {10.1145/2364506.2364509},
944 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.},
945 booktitle = {Proceedings of the 2012 {Haskell} {Symposium}},
946 publisher = {ACM},
947 author = {Adams, Michael D. and DuBuisson, Thomas M.},
948 year = {2012},
949 note = {event-place: Copenhagen, Denmark},
950 keywords = {generic programming, scrap your boilerplate, template haskell},
951 pages = {13--24},
952 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},
953 }
954
955 @inproceedings{norell_prototyping_2004,
956 address = {Berlin, Heidelberg},
957 title = {Prototyping {Generic} {Programming} in {Template} {Haskell}},
958 isbn = {978-3-540-27764-4},
959 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.},
960 booktitle = {Mathematics of {Program} {Construction}},
961 publisher = {Springer Berlin Heidelberg},
962 author = {Norell, Ulf and Jansson, Patrik},
963 editor = {Kozen, Dexter},
964 year = {2004},
965 pages = {314--333},
966 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},
967 }
968
969 @incollection{odonnell_embedding_2004,
970 address = {Berlin, Heidelberg},
971 title = {Embedding a {Hardware} {Description} {Language} in {Template} {Haskell}},
972 isbn = {978-3-540-25935-0},
973 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.},
974 booktitle = {Domain-{Specific} {Program} {Generation}: {International} {Seminar}, {Dagstuhl} {Castle}, {Germany}, {March} 23-28, 2003. {Revised} {Papers}},
975 publisher = {Springer Berlin Heidelberg},
976 author = {O'Donnell, John T.},
977 editor = {Lengauer, Christian and Batory, Don and Consel, Charles and Odersky, Martin},
978 year = {2004},
979 doi = {10.1007/978-3-540-25935-0_9},
980 pages = {143--164},
981 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},
982 }
983
984 @misc{lynagh_unrolling_2003,
985 title = {Unrolling and {Simplifying} {Expressions} with {Template} {Haskell}},
986 url = {http://web.comlab.ox.ac.uk/oucl/work/ian.lynagh/papers/},
987 urldate = {2021-09-07},
988 author = {Lynagh, Ian},
989 month = may,
990 year = {2003},
991 file = {10.1.1.5.9813.pdf:/home/mrl/.local/share/zotero/storage/G4AFM8XZ/10.1.1.5.9813.pdf:application/pdf},
992 }
993
994 @article{elliott_compiling_2003,
995 title = {Compiling embedded languages},
996 volume = {13},
997 doi = {10.1017/S0956796802004574},
998 number = {3},
999 journal = {Journal of Functional Programming},
1000 author = {Elliott, Conal and Finne, Sigbjørn and {\noopsort{Moor}de Moor}, Oege},
1001 year = {2003},
1002 note = {Publisher: Cambridge University Press},
1003 pages = {455--481},
1004 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},
1005 }
1006
1007 @incollection{czarnecki_dsl_2004,
1008 address = {Berlin, Heidelberg},
1009 title = {{DSL} {Implementation} in {MetaOCaml}, {Template} {Haskell}, and {C}++},
1010 isbn = {978-3-540-25935-0},
1011 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.},
1012 booktitle = {Domain-{Specific} {Program} {Generation}: {International} {Seminar}, {Dagstuhl} {Castle}, {Germany}, {March} 23-28, 2003. {Revised} {Papers}},
1013 publisher = {Springer Berlin Heidelberg},
1014 author = {Czarnecki, Krzysztof and O'Donnell, John T. and Striegnitz, J\"{o}rg and Taha, Walid},
1015 editor = {Lengauer, Christian and Batory, Don and Consel, Charles and Odersky, Martin},
1016 year = {2004},
1017 doi = {10.1007/978-3-540-25935-0_4},
1018 pages = {51--72},
1019 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},
1020 }
1021
1022 @inproceedings{sheard_accomplishments_2001,
1023 address = {Berlin, Heidelberg},
1024 title = {Accomplishments and {Research} {Challenges} in {Meta}-programming},
1025 isbn = {978-3-540-44806-8},
1026 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.},
1027 booktitle = {Semantics, {Applications}, and {Implementation} of {Program} {Generation}},
1028 publisher = {Springer Berlin Heidelberg},
1029 author = {Sheard, Tim},
1030 editor = {Taha, Walid},
1031 year = {2001},
1032 pages = {2--44},
1033 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},
1034 }
1035
1036 @inproceedings{kohlbecker_hygienic_1986,
1037 address = {New York, NY, USA},
1038 series = {{LFP} '86},
1039 title = {Hygienic {Macro} {Expansion}},
1040 isbn = {0-89791-200-4},
1041 doi = {10.1145/319838.319859},
1042 booktitle = {Proceedings of the 1986 {ACM} {Conference} on {LISP} and {Functional} {Programming}},
1043 publisher = {ACM},
1044 author = {Kohlbecker, Eugene and Friedman, Daniel P. and Felleisen, Matthias and Duba, Bruce},
1045 year = {1986},
1046 note = {event-place: Cambridge, Massachusetts, USA},
1047 pages = {151--161},
1048 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},
1049 }
1050
1051 @inproceedings{lammel_scrap_2003,
1052 address = {New York, NY, USA},
1053 series = {{TLDI} '03},
1054 title = {Scrap {Your} {Boilerplate}: {A} {Practical} {Design} {Pattern} for {Generic} {Programming}},
1055 isbn = {1-58113-649-8},
1056 doi = {10.1145/604174.604179},
1057 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.},
1058 booktitle = {Proceedings of the 2003 {ACM} {SIGPLAN} {International} {Workshop} on {Types} in {Languages} {Design} and {Implementation}},
1059 publisher = {ACM},
1060 author = {L\"{a}mmel, Ralf and Peyton Jones, Simon},
1061 year = {2003},
1062 note = {event-place: New Orleans, Louisiana, USA},
1063 keywords = {generic programming, rank-2 types, traversal, type cast},
1064 pages = {26--37},
1065 }
1066
1067 @inproceedings{bawden_quasiquotation_1999,
1068 address = {Aarhus, Denmark},
1069 series = {{BRICS} {Notes} {Series}},
1070 title = {Quasiquotation in {Lisp}},
1071 volume = {NS-99-1},
1072 doi = {10.1.1.22.1290},
1073 booktitle = {O. {Danvy}, {Ed}., {University} of {Aarhus}, {Dept}. of {Computer} {Science}},
1074 publisher = {BRICS},
1075 author = {Bawden, Alan},
1076 year = {1999},
1077 pages = {88--99},
1078 file = {Bawden - 1999 - Quasiquotation in Lisp.pdf:/home/mrl/.local/share/zotero/storage/CIFANZAW/Bawden - 1999 - Quasiquotation in Lisp.pdf:application/pdf},
1079 }
1080
1081 @inproceedings{clifton-everest_embedding_2014,
1082 address = {Cham},
1083 title = {Embedding {Foreign} {Code}},
1084 isbn = {978-3-319-04132-2},
1085 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.},
1086 booktitle = {Practical {Aspects} of {Declarative} {Languages}},
1087 publisher = {Springer International Publishing},
1088 author = {Clifton-Everest, Robert and McDonell, Trevor L. and Chakravarty, Manuel M. T. and Keller, Gabriele},
1089 editor = {Flatt, Matthew and Guo, Hai-Feng},
1090 year = {2014},
1091 pages = {136--151},
1092 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},
1093 }
1094
1095 @inproceedings{shioda_libdsl_2014,
1096 address = {New York, NY, USA},
1097 series = {{GPCE} 2014},
1098 title = {{LibDSL}: {A} {Library} for {Developing} {Embedded} {Domain} {Specific} {Languages} in d via {Template} {Metaprogramming}},
1099 isbn = {978-1-4503-3161-6},
1100 doi = {10.1145/2658761.2658770},
1101 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.},
1102 booktitle = {Proceedings of the 2014 {International} {Conference} on {Generative} {Programming}: {Concepts} and {Experiences}},
1103 publisher = {ACM},
1104 author = {Shioda, Masato and Iwasaki, Hideya and Sato, Shigeyuki},
1105 year = {2014},
1106 note = {event-place: V\"{a}ster\r{a}s, Sweden},
1107 keywords = {D language, Embedded domain specific languages, Library, Metaprogramming},
1108 pages = {63--72},
1109 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},
1110 }
1111
1112 @inproceedings{duregard_embedded_2011,
1113 address = {New York, NY, USA},
1114 series = {Haskell '11},
1115 title = {Embedded {Parser} {Generators}},
1116 isbn = {978-1-4503-0860-1},
1117 doi = {10.1145/2034675.2034689},
1118 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.},
1119 booktitle = {Proceedings of the 4th {ACM} {Symposium} on {Haskell}},
1120 publisher = {ACM},
1121 author = {Dureg\r{a}rd, Jonas and Jansson, Patrik},
1122 year = {2011},
1123 note = {event-place: Tokyo, Japan},
1124 keywords = {domain specific languages, metaprogramming},
1125 pages = {107--117},
1126 }
1127
1128 @inproceedings{eisenberg_promoting_2014,
1129 address = {New York, NY, USA},
1130 series = {Haskell '14},
1131 title = {Promoting {Functions} to {Type} {Families} in {Haskell}},
1132 isbn = {978-1-4503-3041-1},
1133 doi = {10.1145/2633357.2633361},
1134 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.},
1135 booktitle = {Proceedings of the 2014 {ACM} {SIGPLAN} {Symposium} on {Haskell}},
1136 publisher = {ACM},
1137 author = {Eisenberg, Richard A. and Stolarek, Jan},
1138 year = {2014},
1139 note = {event-place: Gothenburg, Sweden},
1140 keywords = {defunctionalization, Haskell, type-level programming},
1141 pages = {95--106},
1142 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},
1143 }
1144
1145 @inproceedings{viera_staged_2018,
1146 address = {New York, NY, USA},
1147 series = {{IFL} 2018},
1148 title = {A {Staged} {Embedding} of {Attribute} {Grammars} in {Haskell}},
1149 isbn = {978-1-4503-7143-8},
1150 doi = {10.1145/3310232.3310235},
1151 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.},
1152 booktitle = {Proceedings of the 30th {Symposium} on {Implementation} and {Application} of {Functional} {Languages}},
1153 publisher = {ACM},
1154 author = {Viera, Marcos and Balestrieri, Florent and Pardo, Alberto},
1155 year = {2018},
1156 note = {event-place: Lowell, MA, USA},
1157 keywords = {Attribute Grammars, Dynamics, EDSL, Haskell, Staging},
1158 pages = {95--106},
1159 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},
1160 }
1161
1162 @article{laufer_type_1996,
1163 title = {Type classes with existential types},
1164 volume = {6},
1165 doi = {10.1017/S0956796800001817},
1166 number = {3},
1167 journal = {Journal of Functional Programming},
1168 author = {L\"{a}ufer, Konstantin},
1169 year = {1996},
1170 note = {Publisher: Cambridge University Press},
1171 pages = {485--518},
1172 }
1173
1174 @incollection{hinze_fun_2003,
1175 address = {Palgrave},
1176 series = {Cornerstones of {Computing}},
1177 title = {Fun {With} {Phantom} {Types}},
1178 isbn = {978-0-333-99285-2},
1179 booktitle = {The {Fun} of {Programming}},
1180 publisher = {Bloomsbury Publishing},
1181 author = {Hinze, Ralf},
1182 editor = {Gibbons, Jeremy and de Moor, Oege},
1183 year = {2003},
1184 pages = {245--262},
1185 }
1186
1187 @inproceedings{boulton_experience_1992,
1188 address = {North-Holland},
1189 title = {Experience with embedding hardware description languages in {HOL}},
1190 volume = {10},
1191 isbn = {0-444-89686-4},
1192 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.},
1193 language = {en},
1194 booktitle = {{IFIP} {TC10}/{WG}},
1195 publisher = {Elsevier},
1196 author = {Boulton, Richard and Gordon, Andrew and Gordon, Mike and Harrison, John and Herbert, John and Tassel, John Van},
1197 editor = {Stavridou, Victoria and Melham, Thomas F. and Boute, Raymond T.},
1198 year = {1992},
1199 note = {event-place: Nijmegen, NL},
1200 pages = {129--156},
1201 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},
1202 }
1203
1204 @inproceedings{terei_safe_2012,
1205 address = {New York, NY, USA},
1206 series = {Haskell '12},
1207 title = {Safe {Haskell}},
1208 isbn = {978-1-4503-1574-6},
1209 doi = {10.1145/2364506.2364524},
1210 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.},
1211 booktitle = {Proceedings of the 2012 {Haskell} {Symposium}},
1212 publisher = {ACM},
1213 author = {Terei, David and Marlow, Simon and Peyton Jones, Simon and Mazières, David},
1214 year = {2012},
1215 note = {event-place: Copenhagen, Denmark},
1216 keywords = {haskell, security, type safety},
1217 pages = {137--148},
1218 file = {2364506.2364524.pdf:/home/mrl/.local/share/zotero/storage/5SMB272R/2364506.2364524.pdf:application/pdf},
1219 }
1220
1221 @techreport{leijen_parsec_2001,
1222 address = {Utrecht},
1223 title = {Parsec: {Direct} {Style} {Monadic} {Parser} {Combinators} {For} {The} {Real} {World}},
1224 language = {en},
1225 number = {UU-CS-2001-27},
1226 institution = {Universiteit Utrecht},
1227 author = {Leijen, Daan and Meijer, Erik},
1228 year = {2001},
1229 pages = {22},
1230 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},
1231 }
1232
1233 @inproceedings{gibbons_folding_2014,
1234 address = {New York, NY, USA},
1235 series = {{ICFP} '14},
1236 title = {Folding {Domain}-{Specific} {Languages}: {Deep} and {Shallow} {Embeddings} ({Functional} {Pearl})},
1237 isbn = {978-1-4503-2873-9},
1238 doi = {10.1145/2628136.2628138},
1239 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.},
1240 booktitle = {Proceedings of the 19th {ACM} {SIGPLAN} {International} {Conference} on {Functional} {Programming}},
1241 publisher = {ACM},
1242 author = {Gibbons, Jeremy and Wu, Nicolas},
1243 year = {2014},
1244 note = {event-place: Gothenburg, Sweden},
1245 keywords = {deep and shallow embedding, domain-specific languages, folds},
1246 pages = {339--347},
1247 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},
1248 }
1249
1250 @inproceedings{oliveira_typecase_2005,
1251 address = {New York, NY, USA},
1252 series = {Haskell '05},
1253 title = {{TypeCase}: {A} {Design} {Pattern} for {Type}-{Indexed} {Functions}},
1254 isbn = {1-59593-071-X},
1255 doi = {10.1145/1088348.1088358},
1256 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.},
1257 booktitle = {Proceedings of the 2005 {ACM} {SIGPLAN} {Workshop} on {Haskell}},
1258 publisher = {ACM},
1259 author = {Oliveira, Bruno C. d. S. and Gibbons, Jeremy},
1260 year = {2005},
1261 note = {event-place: Tallinn, Estonia},
1262 keywords = {generic programming, type classes, type-indexed functions},
1263 pages = {98--109},
1264 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},
1265 }
1266
1267 @inproceedings{odersky_putting_1996,
1268 address = {New York, NY, USA},
1269 series = {{POPL} '96},
1270 title = {Putting {Type} {Annotations} to {Work}},
1271 isbn = {0-89791-769-3},
1272 doi = {10.1145/237721.237729},
1273 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.},
1274 booktitle = {Proceedings of the 23rd {ACM} {SIGPLAN}-{SIGACT} {Symposium} on {Principles} of {Programming} {Languages}},
1275 publisher = {ACM},
1276 author = {Odersky, Martin and L\"{a}ufer, Konstantin},
1277 year = {1996},
1278 note = {event-place: St. Petersburg Beach, Florida, USA},
1279 pages = {54--67},
1280 }
1281
1282 @inproceedings{najd_everything_2016,
1283 address = {New York, NY, USA},
1284 series = {{PEPM} '16},
1285 title = {Everything {Old} is {New} {Again}: {Quoted} {Domain}-{Specific} {Languages}},
1286 isbn = {978-1-4503-4097-7},
1287 doi = {10.1145/2847538.2847541},
1288 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.},
1289 booktitle = {Proceedings of the 2016 {ACM} {SIGPLAN} {Workshop} on {Partial} {Evaluation} and {Program} {Manipulation}},
1290 publisher = {ACM},
1291 author = {Najd, Shayan and Lindley, Sam and Svenningsson, Josef and Wadler, Philip},
1292 year = {2016},
1293 note = {event-place: St. Petersburg, FL, USA},
1294 keywords = {domain-specific language, DSL, EDSL, embedded language, normalisation, QDSL, quotation, subformula principle},
1295 pages = {25--36},
1296 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},
1297 }
1298
1299 @article{carette_finally_2009,
1300 title = {Finally tagless, partially evaluated: {Tagless} staged interpreters for simpler typed languages},
1301 volume = {19},
1302 doi = {10.1017/S0956796809007205},
1303 number = {5},
1304 journal = {Journal of Functional Programming},
1305 author = {Carette, Jacques and Kiselyov, Oleg and Shan, Chung-Chieh},
1306 year = {2009},
1307 note = {Publisher: Cambridge University Press},
1308 pages = {509--543},
1309 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},
1310 }
1311
1312 @inproceedings{leijen_domain_2000,
1313 address = {New York, NY, USA},
1314 series = {{DSL} '99},
1315 title = {Domain {Specific} {Embedded} {Compilers}},
1316 isbn = {1-58113-255-7},
1317 doi = {10.1145/331960.331977},
1318 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.},
1319 booktitle = {Proceedings of the 2nd {Conference} on {Domain}-{Specific} {Languages}},
1320 publisher = {ACM},
1321 author = {Leijen, Daan and Meijer, Erik},
1322 year = {2000},
1323 note = {event-place: Austin, Texas, USA},
1324 pages = {109--122},
1325 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},
1326 }
1327
1328 @techreport{plasmeijer_clean_2021,
1329 address = {Nijmegen},
1330 title = {Clean {Language} {Report} version 3.1},
1331 urldate = {2021-12-22},
1332 institution = {Institute for Computing and Information Sciences},
1333 author = {Plasmeijer, Rinus and {\noopsort{Eekelen}van Eekelen}, Marko and {\noopsort{Groningen}van Groningen}, John},
1334 month = dec,
1335 year = {2021},
1336 pages = {127},
1337 file = {CleanLanguageReport.pdf:/home/mrl/.local/share/zotero/storage/I2SDRIH6/CleanLanguageReport.pdf:application/pdf},
1338 }
1339
1340 @incollection{kiselyov_typed_2012,
1341 address = {Berlin, Heidelberg},
1342 title = {Typed {Tagless} {Final} {Interpreters}},
1343 isbn = {978-3-642-32202-0},
1344 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.},
1345 booktitle = {Generic and {Indexed} {Programming}: {International} {Spring} {School}, {SSGIP} 2010, {Oxford}, {UK}, {March} 22-26, 2010, {Revised} {Lectures}},
1346 publisher = {Springer Berlin Heidelberg},
1347 author = {Kiselyov, Oleg},
1348 editor = {Gibbons, Jeremy},
1349 year = {2012},
1350 doi = {10.1007/978-3-642-32202-0_3},
1351 pages = {130--174},
1352 file = {Kiselyov - 2012 - Typed Tagless Final Interpreters.pdf:/home/mrl/.local/share/zotero/storage/9NBYZLRP/Kiselyov - 2012 - Typed Tagless Final Interpreters.pdf:application/pdf},
1353 }
1354
1355 @inproceedings{nocker_concurrent_1991,
1356 address = {Berlin, Heidelberg},
1357 title = {Concurrent clean},
1358 isbn = {978-3-540-47472-2},
1359 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.},
1360 booktitle = {{PARLE} '91 {Parallel} {Architectures} and {Languages} {Europe}},
1361 publisher = {Springer Berlin Heidelberg},
1362 author = {N\"{o}cker, E. G. J. M. H. and Smetsers, J. E. W. and {\noopsort{Eekelen}van Eekelen}, M. C. J. D. and Plasmeijer, M. J.},
1363 editor = {Aarts, Emile H. L. and van Leeuwen, Jan and Rem, Martin},
1364 year = {1991},
1365 pages = {202--219},
1366 }
1367
1368 @inproceedings{staps_lazy_2019,
1369 address = {New York, NY, USA},
1370 series = {{IFL} '19},
1371 title = {Lazy {Interworking} of {Compiled} and {Interpreted} {Code} for {Sandboxing} and {Distributed} {Systems}},
1372 isbn = {978-1-4503-7562-7},
1373 doi = {10.1145/3412932.3412941},
1374 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.},
1375 booktitle = {Proceedings of the 31st {Symposium} on {Implementation} and {Application} of {Functional} {Languages}},
1376 publisher = {ACM},
1377 author = {Staps, Camil and {\noopsort{Groningen}van Groningen}, John and Plasmeijer, Rinus},
1378 year = {2019},
1379 note = {event-place: Singapore, Singapore},
1380 keywords = {functional programming, interpreters, laziness, sandboxing, web-assembly},
1381 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},
1382 }
1383
1384 @incollection{mernik_extensible_2013,
1385 address = {Hershey, PA, USA},
1386 title = {Extensible {Languages}: {Blurring} the {Distinction} between {DSL} and {GPL}},
1387 isbn = {978-1-4666-2092-6},
1388 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.},
1389 booktitle = {Formal and {Practical} {Aspects} of {Domain}-{Specific} {Languages}: {Recent} {Developments}},
1390 publisher = {IGI Global},
1391 author = {Verna, Didier},
1392 editor = {Mernik, Marjan},
1393 year = {2013},
1394 doi = {10.4018/978-1-4666-2092-6.ch001},
1395 pages = {1--31},
1396 }
1397
1398 @inproceedings{hudak_modular_1998,
1399 title = {Modular domain specific languages and tools},
1400 doi = {10.1109/ICSR.1998.685738},
1401 booktitle = {Proceedings. {Fifth} {International} {Conference} on {Software} {Reuse} ({Cat}. {No}.{98TB100203})},
1402 author = {Hudak, P.},
1403 year = {1998},
1404 pages = {134--142},
1405 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},
1406 }
1407
1408 @book{fowler_domain_2010,
1409 edition = {1st},
1410 title = {Domain {Specific} {Languages}},
1411 isbn = {0-321-71294-3},
1412 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\#.},
1413 publisher = {Addison-Wesley Professional},
1414 author = {Fowler, Martin},
1415 year = {2010},
1416 file = {Fowler - 2010 - Domain-specific languages.pdf:/home/mrl/.local/share/zotero/storage/YYMYXTZ5/Fowler - 2010 - Domain-specific languages.pdf:application/pdf},
1417 }
1418
1419 @misc{lewis_speech_1985,
1420 address = {Washington, D.C.},
1421 type = {Speech},
1422 title = {Speech},
1423 url = {http://www.chetansharma.com/correcting-the-iot-history/},
1424 author = {Lewis, Peter T.},
1425 month = sep,
1426 year = {1985},
1427 }
1428
1429 @article{weiser_computer_1991,
1430 title = {The {Computer} for the 21 st {Century}},
1431 volume = {265},
1432 language = {en},
1433 number = {3},
1434 journal = {Scientific American},
1435 author = {Weiser, Mark},
1436 month = sep,
1437 year = {1991},
1438 pages = {94--105},
1439 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},
1440 }
1441
1442 @misc{evans_internet_2011,
1443 title = {The {Internet} of {Things}: {How} the {Next} {Evolution} of the {Internet} {Is} {Changing} {Everything}},
1444 url = {https://www.cisco.com/c/dam/en_us/about/ac79/docs/innov/IoT_IBSG_0411FINAL.pdf},
1445 language = {en},
1446 publisher = {Cisco Internet Business Solutions Group (IBSG)},
1447 author = {Evans, Dave},
1448 month = apr,
1449 year = {2011},
1450 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},
1451 }
1452
1453 @inproceedings{ireland_classification_2009,
1454 address = {Cancun, Mexico},
1455 title = {A {Classification} of {Object}-{Relational} {Impedance} {Mismatch}},
1456 isbn = {978-0-7695-3550-0},
1457 doi = {10.1109/DBKDA.2009.11},
1458 booktitle = {First {International} {Conference} on {Advances} in {Databases}, {Knowledge}, and {Data} {Applications}},
1459 publisher = {IEEE},
1460 author = {Ireland, Christopher and Bowers, David and Newton, Michael and Waugh, Kevin},
1461 year = {2009},
1462 pages = {36--43},
1463 }
1464
1465 @inproceedings{steenvoorden_tophat_2019,
1466 address = {New York, NY, USA},
1467 series = {{PPDP} '19},
1468 title = {{TopHat}: {A} {Formal} {Foundation} for {Task}-{Oriented} {Programming}},
1469 isbn = {978-1-4503-7249-7},
1470 doi = {10.1145/3354166.3354182},
1471 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.},
1472 booktitle = {Proceedings of the 21st {International} {Symposium} on {Principles} and {Practice} of {Declarative} {Programming}},
1473 publisher = {ACM},
1474 author = {Steenvoorden, Tim and Naus, Nico and Klinik, Markus},
1475 year = {2019},
1476 note = {event-place: Porto, Portugal},
1477 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},
1478 }
1479
1480 @incollection{koopman_type-safe_2019,
1481 address = {Cham},
1482 title = {Type-{Safe} {Functions} and {Tasks} in a {Shallow} {Embedded} {DSL} for {Microprocessors}},
1483 isbn = {978-3-030-28346-9},
1484 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.},
1485 booktitle = {Central {European} {Functional} {Programming} {School}: 6th {Summer} {School}, {CEFP} 2015, {Budapest}, {Hungary}, {July} 610, 2015, {Revised} {Selected} {Papers}},
1486 publisher = {Springer International Publishing},
1487 author = {Koopman, Pieter and Plasmeijer, Rinus},
1488 editor = {Zs\'{o}k, Vikt\'{o}ria and Porkol\'{a}b, Zolt\'{a}n and Horv\'{a}th, Zolt\'{a}n},
1489 year = {2019},
1490 doi = {10.1007/978-3-030-28346-9_8},
1491 pages = {283--340},
1492 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},
1493 }
1494
1495 @techreport{cheney_first-class_2003,
1496 title = {First-class phantom types},
1497 url = {https://ecommons.cornell.edu/handle/1813/5614},
1498 number = {TR2003-1901},
1499 urldate = {2017-05-15},
1500 institution = {Cornell University},
1501 author = {Cheney, James and Hinze, Ralf},
1502 year = {2003},
1503 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},
1504 }
1505
1506 @article{mitchell_abstract_1988,
1507 title = {Abstract {Types} {Have} {Existential} {Type}},
1508 volume = {10},
1509 issn = {0164-0925},
1510 doi = {10.1145/44501.45065},
1511 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.},
1512 number = {3},
1513 journal = {ACM Trans. Program. Lang. Syst.},
1514 author = {Mitchell, John C. and Plotkin, Gordon D.},
1515 month = jul,
1516 year = {1988},
1517 note = {Place: New York, NY, USA
1518 Publisher: ACM},
1519 pages = {470--502},
1520 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},
1521 }
1522
1523 @inproceedings{baars_typing_2002,
1524 address = {New York, NY, USA},
1525 series = {{ICFP} '02},
1526 title = {Typing {Dynamic} {Typing}},
1527 isbn = {1-58113-487-8},
1528 doi = {10.1145/581478.581494},
1529 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.},
1530 booktitle = {Proceedings of the {Seventh} {ACM} {SIGPLAN} {International} {Conference} on {Functional} {Programming}},
1531 publisher = {ACM},
1532 author = {Baars, Arthur I. and Swierstra, S. Doaitse},
1533 year = {2002},
1534 note = {event-place: Pittsburgh, PA, USA},
1535 keywords = {coercions, dynamic typing, Haskell, Leibnitz' rule, quantified types, static typing, type equality, typed interpreters},
1536 pages = {157--166},
1537 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},
1538 }
1539
1540 @inproceedings{young_adding_2021,
1541 address = {Berlin, Heidelberg},
1542 title = {On {Adding} {Pattern} {Matching} to {Haskell}-{Based} {Deeply} {Embedded} {Domain} {Specific} {Languages}},
1543 isbn = {978-3-030-67437-3},
1544 doi = {10.1007/978-3-030-67438-0_2},
1545 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.},
1546 booktitle = {Practical {Aspects} of {Declarative} {Languages}: 23rd {International} {Symposium}, {PADL} 2021, {Copenhagen}, {Denmark}, {January} 18-19, 2021, {Proceedings}},
1547 publisher = {Springer-Verlag},
1548 author = {Young, David and Grebe, Mark and Gill, Andy},
1549 year = {2021},
1550 note = {event-place: Copenhagen, Denmark},
1551 pages = {20--36},
1552 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},
1553 }
1554
1555 @incollection{hinze_generic_2003,
1556 address = {Berlin, Heidelberg},
1557 title = {Generic {Haskell}: {Practice} and {Theory}},
1558 isbn = {978-3-540-45191-4},
1559 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.},
1560 booktitle = {Generic {Programming}: {Advanced} {Lectures}},
1561 publisher = {Springer Berlin Heidelberg},
1562 author = {Hinze, Ralf and Jeuring, Johan},
1563 editor = {Backhouse, Roland and Gibbons, Jeremy},
1564 year = {2003},
1565 doi = {10.1007/978-3-540-45191-4_1},
1566 pages = {1--56},
1567 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},
1568 }
1569
1570 @article{alhirabi_security_2021,
1571 title = {Security and {Privacy} {Requirements} for the {Internet} of {Things}: {A} {Survey}},
1572 volume = {2},
1573 issn = {2691-1914},
1574 doi = {10.1145/3437537},
1575 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.},
1576 number = {1},
1577 journal = {ACM Trans. Internet Things},
1578 author = {Alhirabi, Nada and Rana, Omer and Perera, Charith},
1579 month = feb,
1580 year = {2021},
1581 note = {Place: New York, NY, USA
1582 Publisher: ACM},
1583 keywords = {design principles, Internet of Things, non functional requirements, notation, software design tools, software engineering},
1584 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},
1585 }
1586
1587 @inproceedings{torrano_strictness_2005,
1588 address = {Bristol, UK},
1589 series = {Trends in {Functional} {Programming}},
1590 title = {Strictness {Analysis} and let-to-case {Transformation} using {Template} {Haskell}},
1591 volume = {6},
1592 isbn = {978-1-84150-176-5},
1593 booktitle = {Revised {Selected} {Papers} from the {Sixth} {Symposium} on {Trends} in {Functional} {Programming}, {TFP} 2005, {Tallinn}, {Estonia}, 23-24 {September} 2005},
1594 publisher = {Intellect},
1595 author = {Torrano, Carmen and Segura, Clara},
1596 editor = {Eekelen, Marko C. J. D. van},
1597 year = {2005},
1598 note = {event-place: Talinn, Estonia},
1599 pages = {429--442},
1600 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},
1601 }
1602
1603 @inproceedings{polak_automatic_2006,
1604 address = {Bristol, UK},
1605 series = {Trends in {Functional} {Programming}},
1606 title = {Automatic {Graphical} {User} {Interface} {Form} {Generation} {Using} {Template} {Haskell}},
1607 volume = {7},
1608 isbn = {978-1-84150-188-8},
1609 booktitle = {Revised {Selected} {Papers} from the {Seventh} {Symposium} on {Trends} in {Functional} {Programming}, {TFP} 2006, {Nottingham}, {United} {Kingdom}, 19-21 {April} 2006},
1610 publisher = {Intellect},
1611 author = {Polak, Gracjan and Jarosz, Janusz},
1612 editor = {Nilsson, Henrik},
1613 year = {2006},
1614 note = {event-place: Nottingham, UK},
1615 pages = {1--11},
1616 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},
1617 }
1618
1619 @inproceedings{koopman_executable_2011,
1620 address = {Berlin, Heidelberg},
1621 title = {An {Executable} and {Testable} {Semantics} for {iTasks}},
1622 isbn = {978-3-642-24452-0},
1623 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.},
1624 booktitle = {Implementation and {Application} of {Functional} {Languages}},
1625 publisher = {Springer Berlin Heidelberg},
1626 author = {Koopman, Pieter and Plasmeijer, Rinus and Achten, Peter},
1627 editor = {Scholz, Sven-Bodo and Chitil, Olaf},
1628 year = {2011},
1629 pages = {212--232},
1630 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},
1631 }
1632
1633 @phdthesis{antonova_mtask_2022,
1634 address = {Nijmegen},
1635 type = {Bachelor's {Thesis}},
1636 title = {{mTask} {Semantics} and its {Comparison} to {TopHat}},
1637 language = {en},
1638 school = {Radboud University},
1639 author = {Antonova, Elina},
1640 year = {2022},
1641 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},
1642 }
1643
1644 @inproceedings{lijnse_capturing_2011,
1645 address = {Lisbon, Portugal},
1646 title = {Capturing the {Netherlands} {Coast} {Guard}'s {SAR} {Workflow} with {iTasks}},
1647 language = {en},
1648 booktitle = {Proceedings of the 8th {International} {ISCRAM} {Conference}},
1649 author = {Lijnse, Bas and Nanne, Ruud and Jansen, Jan Martin and Plasmeijer, Rinus},
1650 year = {2011},
1651 pages = {10},
1652 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},
1653 }
1654
1655 @misc{wadler_expression_1998,
1656 title = {The expression problem},
1657 url = {https://homepages.inf.ed.ac.uk/wadler/papers/expression/expression.txt},
1658 language = {en},
1659 urldate = {2021-02-24},
1660 author = {Wadler, Philip},
1661 month = nov,
1662 year = {1998},
1663 note = {e-mail message, accessed-on: 2021-02-24},
1664 }
1665
1666 @misc{margaret_deuter_rhapsody_2015,
1667 address = {Oxford},
1668 edition = {Ninth edition},
1669 title = {Rhapsody},
1670 journal = {Oxford Advanced Learner's Dictionary of Current English},
1671 publisher = {Oxford University Press},
1672 author = {{A S Hornby}},
1673 editor = {{Margaret Deuter} and {Jennifer Bradbery} and {Joanna Turnbull}},
1674 year = {2015},
1675 }
1676
1677 @misc{wikipedia_contributors_rhapsody_2022,
1678 title = {Rhapsody (music){Wikipedia}, {The} {Free} {Encyclopedia}},
1679 url = {https://en.wikipedia.org/w/index.php?title=Rhapsody_(music)\&oldid=1068385257},
1680 urldate = {2022-09-06},
1681 journal = {Wikipedia},
1682 author = {{Wikipedia contributors}},
1683 year = {2022},
1684 note = {accessed on: 2022-09-06},
1685 }
1686
1687 @incollection{backus_introduction_1990,
1688 address = {USA},
1689 title = {An {Introduction} to the {Programming} {Language} {FL}},
1690 isbn = {0-201-17236-4},
1691 booktitle = {Research {Topics} in {Functional} {Programming}},
1692 publisher = {Addison-Wesley Longman Publishing Co., Inc.},
1693 author = {Backus, John and Williams, John H. and Wimmers, Edward L.},
1694 year = {1990},
1695 pages = {219--247},
1696 }
1697
1698 @article{achten_ins_1995,
1699 title = {The ins and outs of {Clean} {I}/{O}},
1700 volume = {5},
1701 doi = {10.1017/S0956796800001258},
1702 number = {1},
1703 journal = {Journal of Functional Programming},
1704 author = {Achten, Peter and Plasmeijer, Rinus},
1705 year = {1995},
1706 note = {Publisher: Cambridge University Press},
1707 pages = {81--110},
1708 }
1709
1710 @inproceedings{peyton_jones_imperative_1993,
1711 address = {New York, NY, USA},
1712 series = {{POPL} '93},
1713 title = {Imperative {Functional} {Programming}},
1714 isbn = {0-89791-560-7},
1715 doi = {10.1145/158511.158524},
1716 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.},
1717 booktitle = {Proceedings of the 20th {ACM} {SIGPLAN}-{SIGACT} {Symposium} on {Principles} of {Programming} {Languages}},
1718 publisher = {ACM},
1719 author = {Peyton Jones, Simon and Wadler, Philip},
1720 year = {1993},
1721 note = {event-place: Charleston, South Carolina, USA},
1722 pages = {71--84},
1723 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},
1724 }
1725
1726 @inproceedings{achten_high_1993,
1727 address = {London},
1728 title = {High {Level} {Specification} of {I}/{O} in {Functional} {Languages}},
1729 isbn = {978-1-4471-3215-8},
1730 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.},
1731 booktitle = {Functional {Programming}, {Glasgow} 1992},
1732 publisher = {Springer London},
1733 author = {Achten, Peter and {\noopsort{Groningen}van Groningen}, John and Plasmeijer, Rinus},
1734 editor = {Launchbury, John and Sansom, Patrick},
1735 year = {1993},
1736 pages = {1--17},
1737 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},
1738 }
1739
1740 @inproceedings{pickering_staged_2020,
1741 address = {New York, NY, USA},
1742 series = {Haskell 2020},
1743 title = {Staged {Sums} of {Products}},
1744 isbn = {978-1-4503-8050-8},
1745 doi = {10.1145/3406088.3409021},
1746 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.},
1747 booktitle = {Proceedings of the 13th {ACM} {SIGPLAN} {International} {Symposium} on {Haskell}},
1748 publisher = {ACM},
1749 author = {Pickering, Matthew and L\"{o}h, Andres and Wu, Nicolas},
1750 year = {2020},
1751 note = {event-place: Virtual Event, USA},
1752 keywords = {generic programming, staging},
1753 pages = {122--135},
1754 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},
1755 }
1756
1757 @article{xie_staging_2022,
1758 title = {Staging with {Class}: {A} {Specification} for {Typed} {Template} {Haskell}},
1759 volume = {6},
1760 doi = {10.1145/3498723},
1761 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.},
1762 number = {POPL},
1763 journal = {Proc. ACM Program. Lang.},
1764 author = {Xie, Ningning and Pickering, Matthew and L\"{o}h, Andres and Wu, Nicolas and Yallop, Jeremy and Wang, Meng},
1765 month = jan,
1766 year = {2022},
1767 note = {Place: New York, NY, USA
1768 Publisher: ACM},
1769 keywords = {Staging, Type Classes, Typed Template Haskell},
1770 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},
1771 }
1772
1773 @article{rhiger_type-safe_2009,
1774 title = {Type-safe pattern combinators},
1775 volume = {19},
1776 doi = {10.1017/S0956796808007089},
1777 number = {2},
1778 journal = {Journal of Functional Programming},
1779 author = {Rhiger, Morten},
1780 year = {2009},
1781 note = {Publisher: Cambridge University Press},
1782 pages = {145--156},
1783 file = {RHIGER - 2009 - Type-safe pattern combinators.pdf:/home/mrl/.local/share/zotero/storage/D4N7PGBS/RHIGER - 2009 - Type-safe pattern combinators.pdf:application/pdf},
1784 }
1785
1786 @inproceedings{de_vries_true_2014,
1787 address = {New York, NY, USA},
1788 series = {{WGP} '14},
1789 title = {True {Sums} of {Products}},
1790 isbn = {978-1-4503-3042-8},
1791 doi = {10.1145/2633628.2633634},
1792 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.},
1793 booktitle = {Proceedings of the 10th {ACM} {SIGPLAN} {Workshop} on {Generic} {Programming}},
1794 publisher = {ACM},
1795 author = {de Vries, Edsko and L\"{o}h, Andres},
1796 year = {2014},
1797 note = {event-place: Gothenburg, Sweden},
1798 keywords = {datatype-generic programming, generic views, json, lenses, metadata, sums of products, universes},
1799 pages = {83--94},
1800 }
1801
1802 @article{willis_staged_2020,
1803 title = {Staged {Selective} {Parser} {Combinators}},
1804 volume = {4},
1805 doi = {10.1145/3409002},
1806 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.},
1807 number = {ICFP},
1808 journal = {Proc. ACM Program. Lang.},
1809 author = {Willis, Jamie and Wu, Nicolas and Pickering, Matthew},
1810 month = aug,
1811 year = {2020},
1812 note = {Place: New York, NY, USA
1813 Publisher: ACM},
1814 keywords = {combinators, meta-programming, parsers},
1815 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},
1816 }
1817
1818 @inproceedings{pickering_multi-stage_2019,
1819 address = {New York, NY, USA},
1820 series = {Haskell 2019},
1821 title = {Multi-{Stage} {Programs} in {Context}},
1822 isbn = {978-1-4503-6813-1},
1823 doi = {10.1145/3331545.3342597},
1824 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.},
1825 booktitle = {Proceedings of the 12th {ACM} {SIGPLAN} {International} {Symposium} on {Haskell}},
1826 publisher = {ACM},
1827 author = {Pickering, Matthew and Wu, Nicolas and Kiss, Csongor},
1828 year = {2019},
1829 note = {event-place: Berlin, Germany},
1830 keywords = {implicits, metaprogramming, staging},
1831 pages = {71--84},
1832 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},
1833 }
1834
1835 @article{pickering_specification_2021,
1836 title = {A {Specification} for {Typed} {Template} {Haskell}},
1837 volume = {abs/2112.03653},
1838 doi = {10.48550/arXiv.2112.03653},
1839 journal = {CoRR},
1840 author = {Pickering, Matthew and L\"{o}h, Andres and Wu, Nicolas},
1841 year = {2021},
1842 note = {arXiv: 2112.03653},
1843 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},
1844 }
1845
1846 @book{steenvoorden_tophat_2022,
1847 address = {Nijmegen},
1848 title = {{TopHat}: {Task}-{Oriented} {Programming} with {Style}},
1849 isbn = {978-94-6458-595-7},
1850 shorttitle = {{TopHat}: {TOP} with {Style}},
1851 language = {English},
1852 publisher = {UB Nijmegen},
1853 author = {Steenvoorden, Tim},
1854 year = {2022},
1855 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},
1856 }
1857
1858 @inproceedings{folmer_high-level_2022,
1859 address = {Cham},
1860 title = {High-{Level} {Synthesis} of {Digital} {Circuits} from {Template} {Haskell} and {SDF}-{AP}},
1861 isbn = {978-3-031-15074-6},
1862 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.},
1863 booktitle = {Embedded {Computer} {Systems}: {Architectures}, {Modeling}, and {Simulation}},
1864 publisher = {Springer International Publishing},
1865 author = {Folmer, H. H. and Groote, R. de and Bekooij, M. J. G.},
1866 editor = {Orailoglu, Alex and Reichenbach, Marc and Jung, Matthias},
1867 year = {2022},
1868 pages = {3--27},
1869 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},
1870 }
1871
1872 @article{materzok_generating_2022,
1873 title = {Generating {Circuits} with {Generators}},
1874 volume = {6},
1875 doi = {10.1145/3549821},
1876 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.},
1877 number = {ICFP},
1878 journal = {Proc. ACM Program. Lang.},
1879 author = {Materzok, Marek},
1880 month = aug,
1881 year = {2022},
1882 note = {Place: New York, NY, USA
1883 Publisher: ACM},
1884 keywords = {circuit synthesis, generators, hardware description languages},
1885 file = {Materzok - 2022 - Generating Circuits with Generators.pdf:/home/mrl/.local/share/zotero/storage/LH4Q8J73/Materzok - 2022 - Generating Circuits with Generators.pdf:application/pdf},
1886 }
1887
1888 @article{egi_embedding_2022,
1889 title = {Embedding {Non}-linear {Pattern} {Matching} with {Backtracking} for {Non}-free {Data} {Types} into {Haskell}},
1890 volume = {40},
1891 issn = {1882-7055},
1892 doi = {10.1007/s00354-022-00177-z},
1893 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.},
1894 number = {2},
1895 journal = {New Generation Computing},
1896 author = {Egi, Satoshi and Kawata, Akira and Kori, Mayuko and Ogawa, Hiromi},
1897 month = jul,
1898 year = {2022},
1899 pages = {481--506},
1900 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},
1901 }
1902
1903 @inproceedings{blanchette_liquid_2022,
1904 address = {New York, NY, USA},
1905 series = {Haskell 2022},
1906 title = {Liquid {Proof} {Macros}},
1907 isbn = {978-1-4503-9438-3},
1908 doi = {10.1145/3546189.3549921},
1909 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.},
1910 booktitle = {Proceedings of the 15th {ACM} {SIGPLAN} {International} {Haskell} {Symposium}},
1911 publisher = {ACM},
1912 author = {Blanchette, Henry and Vazou, Niki and Lampropoulos, Leonidas},
1913 year = {2022},
1914 note = {event-place: Ljubljana, Slovenia},
1915 keywords = {Liquid Haskell, Proof Macros, Tactics},
1916 pages = {27--38},
1917 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},
1918 }
1919
1920 @phdthesis{baaij_digital_2015,
1921 address = {Netherlands},
1922 type = {{PhD} {Thesis}},
1923 title = {Digital circuit in {C$\lambda$aSH}: functional specifications and type-directed synthesis},
1924 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.},
1925 language = {Undefined},
1926 school = {University of Twente},
1927 author = {Baaij, C. P. R.},
1928 month = jan,
1929 year = {2015},
1930 doi = {10.3990/1.9789036538039},
1931 note = {ISBN: 978-90-365-3803-9},
1932 keywords = {Haskell, Digital Circuits, EC Grant Agreement nr.: FP7/248465, EC Grant Agreement nr.: FP7/610686, EWI-23939, FPGA, Functional Programming, Hardware, IR-93962, Lambda calculus, METIS-308711, Rewrite Systems},
1933 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},
1934 }
1935
1936 @inproceedings{mcdonell_embedded_2022,
1937 address = {New York, NY, USA},
1938 series = {Haskell 2022},
1939 title = {Embedded {Pattern} {Matching}},
1940 isbn = {978-1-4503-9438-3},
1941 doi = {10.1145/3546189.3549917},
1942 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.},
1943 booktitle = {Proceedings of the 15th {ACM} {SIGPLAN} {International} {Haskell} {Symposium}},
1944 publisher = {ACM},
1945 author = {McDonell, Trevor L. and Meredith, Joshua D. and Keller, Gabriele},
1946 year = {2022},
1947 note = {event-place: Ljubljana, Slovenia},
1948 keywords = {algebraic data types, embedded languages, Haskell, pattern matching},
1949 pages = {123--136},
1950 file = {2108.13114.pdf:/home/mrl/.local/share/zotero/storage/AJAT8AXI/2108.13114.pdf:application/pdf},
1951 }
1952
1953 @phdthesis{krishnamurthi_linguistic_2001,
1954 address = {Houston, USA},
1955 type = {{PhD} {Thesis}},
1956 title = {Linguistic reuse},
1957 school = {Rice University},
1958 author = {Krishnamurthi, Shriram},
1959 year = {2001},
1960 file = {Krishnamurthi - 2001 - Linguistic reuse.PDF:/home/mrl/.local/share/zotero/storage/LSKHFPIS/Krishnamurthi - 2001 - Linguistic reuse.PDF:application/pdf},
1961 }
1962
1963 @misc{ashton_internet_1999,
1964 address = {London, UK},
1965 type = {Presentation},
1966 title = {Internet of {Things}},
1967 author = {Ashton, Kevin},
1968 year = {1999},
1969 note = {Presentation at Proctor \& Gamble},
1970 }
1971
1972 @article{ashton_that_2009,
1973 title = {That ‘{Internet} of {Things}{Thing}},
1974 volume = {22},
1975 number = {7},
1976 journal = {RFID journal},
1977 author = {Ashton, Kevin},
1978 year = {2009},
1979 note = {Publisher: Hauppauge, New York},
1980 pages = {97--114},
1981 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},
1982 }
1983
1984 @phdthesis{van_gemert_task_2022,
1985 address = {Nijmegen},
1986 type = {Bachelor's {Thesis}},
1987 title = {Task {Oriented} {Programming} in {LUA}},
1988 language = {en},
1989 school = {Radboud University},
1990 author = {van Gemert, Dante},
1991 year = {2022},
1992 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},
1993 }
1994
1995 @misc{lijnse_toppyt_2022,
1996 title = {Toppyt},
1997 url = {https://gitlab.com/baslijnse/toppyt},
1998 urldate = {2022-10-07},
1999 author = {Lijnse, Bas},
2000 year = {2022},
2001 }
2002
2003 @article{kiselyov_implementing_2011,
2004 title = {Implementing {Explicit} and {Finding} {Implicit} {Sharing} in {Embedded} {DSLs}},
2005 volume = {66},
2006 doi = {10.4204/eptcs.66.11},
2007 journal = {Electronic Proceedings in Theoretical Computer Science},
2008 author = {Kiselyov, Oleg},
2009 month = sep,
2010 year = {2011},
2011 note = {Publisher: Open Publishing Association},
2012 pages = {210--225},
2013 }
2014
2015 @article{sun_compositional_2022,
2016 title = {Compositional {Embeddings} of {Domain}-{Specific} {Languages}},
2017 volume = {6},
2018 doi = {10.1145/3563294},
2019 language = {en},
2020 number = {OOPSLA2},
2021 journal = {Proc. ACM Program. Lang.},
2022 author = {Sun, Yaozhu and Dhandhania, Utkarsh and Oliveira, Bruno C. d. S.},
2023 year = {2022},
2024 pages = {34},
2025 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},
2026 }
2027
2028 @misc{lubbers_htask_2022,
2029 title = {{hTask}},
2030 url = {https://gitlab.com/mlubbers/hTask},
2031 urldate = {2022-10-07},
2032 author = {Lubbers, Mart},
2033 year = {2022},
2034 }
2035
2036 @article{nizetic_internet_2020,
2037 title = {Internet of {Things} ({IoT}): {Opportunities}, issues and challenges towards a smart and sustainable future},
2038 volume = {274},
2039 issn = {0959-6526},
2040 doi = {https://doi.org/10.1016/j.jclepro.2020.122877},
2041 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 SpliTech2019 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 SpliTech2019 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.},
2042 journal = {Journal of Cleaner Production},
2043 author = {Ni\v{z}eti\'{c}, Sandro and \v{S}oli\'{c}, Petar and Gonz\'{a}lez-de-Artaza, Diego L\'{o}pez-de-Ipiña and Patrono, Luigi},
2044 year = {2020},
2045 keywords = {IoT, Energy, Environment, Smart city, SpliTech2020, Sustainability},
2046 pages = {122877},
2047 }
2048
2049 @article{shi_edge_2016,
2050 title = {Edge {Computing}: {Vision} and {Challenges}},
2051 volume = {3},
2052 doi = {10.1109/JIOT.2016.2579198},
2053 number = {5},
2054 journal = {IEEE Internet of Things Journal},
2055 author = {Shi, Weisong and Cao, Jie and Zhang, Quan and Li, Youhuizi and Xu, Lanyu},
2056 year = {2016},
2057 pages = {637--646},
2058 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},
2059 }
2060
2061 @article{sanchez-iborra_tinyml-enabled_2020,
2062 title = {{TinyML}-{Enabled} {Frugal} {Smart} {Objects}: {Challenges} and {Opportunities}},
2063 volume = {20},
2064 doi = {10.1109/MCAS.2020.3005467},
2065 number = {3},
2066 journal = {IEEE Circuits and Systems Magazine},
2067 author = {Sanchez-Iborra, Ramon and Skarmeta, Antonio F.},
2068 year = {2020},
2069 pages = {4--18},
2070 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},
2071 }
2072
2073 @inproceedings{koopman_dynamic_2021,
2074 address = {Cham},
2075 title = {Dynamic {Editors} for {Well}-{Typed} {Expressions}},
2076 isbn = {978-3-030-83978-9},
2077 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.},
2078 booktitle = {Trends in {Functional} {Programming}},
2079 publisher = {Springer International Publishing},
2080 author = {Koopman, Pieter and Michels, Steffen and Plasmeijer, Rinus},
2081 editor = {Zs\'{o}k, Vikt\'{o}ria and Hughes, John},
2082 year = {2021},
2083 pages = {44--66},
2084 file = {978-3-030-83978-9_3.pdf:/home/mrl/.local/share/zotero/storage/6654TJL7/978-3-030-83978-9_3.pdf:application/pdf},
2085 }
2086
2087 @inproceedings{omar_hazelnut_2017,
2088 address = {New York, NY, USA},
2089 series = {{POPL} '17},
2090 title = {Hazelnut: {A} {Bidirectionally} {Typed} {Structure} {Editor} {Calculus}},
2091 isbn = {978-1-4503-4660-3},
2092 doi = {10.1145/3009837.3009900},
2093 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.},
2094 booktitle = {Proceedings of the 44th {ACM} {SIGPLAN} {Symposium} on {Principles} of {Programming} {Languages}},
2095 publisher = {ACM},
2096 author = {Omar, Cyrus and Voysey, Ian and Hilton, Michael and Aldrich, Jonathan and Hammer, Matthew A.},
2097 year = {2017},
2098 note = {event-place: Paris, France},
2099 keywords = {bidirectional type systems, gradual typing, mechanized metatheory, structure editors},
2100 pages = {86--99},
2101 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},
2102 }
2103
2104 @article{hester_batteries_2019,
2105 title = {Batteries {Not} {Included}},
2106 volume = {26},
2107 issn = {1528-4972},
2108 doi = {10.1145/3351474},
2109 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.},
2110 number = {1},
2111 journal = {XRDS},
2112 author = {Hester, Josiah and Sorber, Jacob},
2113 month = sep,
2114 year = {2019},
2115 note = {Place: New York, NY, USA
2116 Publisher: ACM},
2117 pages = {23--27},
2118 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},
2119 }
2120
2121 @incollection{management_association_evaluating_2014,
2122 address = {Hershey, PA, USA},
2123 title = {Evaluating the {Usability} of {Domain}-{Specific} {Languages}},
2124 isbn = {978-1-4666-4301-7},
2125 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.},
2126 booktitle = {Software {Design} and {Development}: {Concepts}, {Methodologies}, {Tools}, and {Applications}},
2127 publisher = {IGI Global},
2128 author = {Bari\v{s}ic, Ankica and Amaral, Vasco and Goul\~{a}o, Miguel and Barroca, Bruno},
2129 editor = {Management Association, Information Resources},
2130 year = {2014},
2131 doi = {10.4018/978-1-4666-4301-7.ch098},
2132 pages = {2120--2141},
2133 }
2134
2135 @article{van_der_aalst_workflow_2003,
2136 title = {Workflow {Patterns}},
2137 volume = {14},
2138 issn = {1573-7578},
2139 doi = {10.1023/A:1022883727209},
2140 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.},
2141 number = {1},
2142 journal = {Distributed and Parallel Databases},
2143 author = {{\noopsort{Aalst}van der Aalst}, W.M.P. and {\noopsort{Hofstede}ter Hofstede}, A.H.M. and Kiepuszewski, B. and Barros, A.P.},
2144 month = jul,
2145 year = {2003},
2146 pages = {5--51},
2147 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},
2148 }
2149
2150 @inproceedings{belwal_variable_2013,
2151 address = {New York, NY, USA},
2152 series = {{RACS} '13},
2153 title = {Variable {Voltage} {Scheduling} with the {Priority}-{Based} {Functional} {Reactive} {Programming} {Language}},
2154 isbn = {978-1-4503-2348-2},
2155 doi = {10.1145/2513228.2513271},
2156 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.},
2157 booktitle = {Proceedings of the 2013 {Research} in {Adaptive} and {Convergent} {Systems}},
2158 publisher = {ACM},
2159 author = {Belwal, Chaitanya and Cheng, Albert M. K. and Ras, J. and Wen, Yuanfeng},
2160 year = {2013},
2161 note = {event-place: Montreal, Quebec, Canada},
2162 keywords = {embedded system, real-time},
2163 pages = {440--445},
2164 }
2165
2166 @techreport{transforma_insights_current_2023,
2167 title = {Current {IoT} {Forecast} {Highlights}},
2168 url = {https://transformainsights.com/research/forecast/highlights},
2169 institution = {{Transforma Insights}},
2170 author = {{Transforma Insights}},
2171 month = jan,
2172 year = {2023},
2173 note = {accessed-on: 2023-01-19},
2174 }
2175
2176 @misc{top_software_viia_2023,
2177 title = {{VIIA} ({Vessel} {Information} {Integrating} {Application})},
2178 url = {https://www.top-software.nl/VIIA.html},
2179 urldate = {2023-02-06},
2180 author = {{TOP Software}},
2181 year = {2023},
2182 }
2183
2184 @article{hinze_derivable_2001,
2185 title = {Derivable {Type} {Classes}},
2186 volume = {41},
2187 issn = {1571-0661},
2188 doi = {https://doi.org/10.1016/S1571-0661(05)80542-0},
2189 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.},
2190 number = {1},
2191 journal = {Electronic Notes in Theoretical Computer Science},
2192 author = {Hinze, Ralf and Peyton Jones, Simon},
2193 year = {2001},
2194 pages = {5--35},
2195 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},
2196 }