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