bib
authorMart Lubbers <mart@martlubbers.net>
Wed, 22 Feb 2023 13:07:43 +0000 (14:07 +0100)
committerMart Lubbers <mart@martlubbers.net>
Wed, 22 Feb 2023 13:07:43 +0000 (14:07 +0100)
bib/other.bib
bib/self.bib
bib/tiot.bib
latexmkrc
myabbrvnat.bst [new file with mode: 0644]
preamble/bibliography.tex
preamble/glossaries.tex
process_bib.sh

index 16d5727..392600e 100644 (file)
@@ -1,4 +1,4 @@
-
+@PREAMBLE{ {\providecommand{\noopsort}[1]{}} }
 @inproceedings{suchocki_microscheme:_2015,
        address = {Washington DC, USA},
        series = {{CS} {Techreport} 718},
@@ -46,7 +46,7 @@
        abstract = {Clean is an experimental language for specifying functional computations in terms of graph rewriting. It is based on an extension of Term Rewriting Systems (TRS) in which the terms are replaced by graphs. Such a Graph Rewriting System (GRS) consists of a, possibly cyclic, directed graph, called the data graph and graph rewrite rules which specify how this data graph may be rewritten. Clean is designed to provide a firm base for functional programming. In particular, Clean is suitable as an intermediate language between functional languages and (parallel) target machine architectures. A sequential implementation of Clean on a conventional machine is described and its performance is compared with other systems. The results show that Clean can be efficiently implemented.},
        booktitle = {Functional {Programming} {Languages} and {Computer} {Architecture}},
        publisher = {Springer Berlin Heidelberg},
-       author = {Brus, T. H. and van Eekelen, M. C. J. D. and van Leer, M. O. and Plasmeijer, M. J.},
+       author = {Brus, T. H. and {\noopsort{Eekelen}van Eekelen}, M. C. J. D. and {\noopsort{Leer}van Leer}, M. O. and Plasmeijer, M. J.},
        editor = {Kahn, Gilles},
        year = {1987},
        pages = {364--384},
        language = {English},
        urldate = {2021-02-24},
        publisher = {Release},
-       author = {{{{{GHC Team}}}}},
+       author = {{GHC Team}},
        year = {2021},
        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},
 }
        language = {English},
        urldate = {2021-02-24},
        publisher = {Release},
-       author = {{{{{GHC Team}}}}},
+       author = {{GHC Team}},
        year = {2021},
 }
 
        title = {Combining type classes and existential types},
        booktitle = {Proceedings of the {Latin} {American} {Informatic} {Conference} ({PANEL})},
        publisher = {ITESM-CEM},
-       author = {Läufer, Konstantin},
+       author = {L\"{a}ufer, Konstantin},
        year = {1994},
        note = {event-place: Monterrey, Mexico},
-       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},
 }
 
 @techreport{hughes_restricted_1999,
        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},
        booktitle = {Proceedings of the 8th {ACM} {SIGPLAN} {International} {Conference} on {Principles} and {Practice} of {Declarative} {Programming}},
        publisher = {ACM},
-       author = {Löh, Andres and Hinze, Ralf},
+       author = {L\"{o}h, Andres and Hinze, Ralf},
        year = {2006},
        note = {event-place: Venice, Italy},
-       keywords = {functional programming, Haskell, expression problem, extensible data types, extensible exceptions, extensible functions, generic programming, mutually recursive modules},
+       keywords = {expression problem, extensible data types, extensible exceptions, extensible functions, functional programming, generic programming, Haskell, mutually recursive modules},
        pages = {133--144},
        file = {OpenDatatypes.pdf:/home/mrl/.local/share/zotero/storage/NEP9GZ9N/OpenDatatypes.pdf:application/pdf},
 }
        month = apr,
        year = {1991},
        note = {Place: New York, NY, USA
-Publisher: Association for Computing Machinery},
+Publisher: ACM},
        keywords = {theory},
        pages = {237--268},
        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},
@@ -282,7 +281,7 @@ Publisher: Association for Computing Machinery},
        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.},
        booktitle = {Proceedings of the 8th {ACM} {SIGPLAN} {Workshop} on {Types} in {Language} {Design} and {Implementation}},
        publisher = {ACM},
-       author = {Yorgey, Brent A. and Weirich, Stephanie and Cretin, Julien and Peyton Jones, Simon and Vytiniotis, Dimitrios and Magalhães, José Pedro},
+       author = {Yorgey, Brent A. and Weirich, Stephanie and Cretin, Julien and Peyton Jones, Simon and Vytiniotis, Dimitrios and Magalh\~{a}es, Jos\'{e} Pedro},
        year = {2012},
        note = {event-place: Philadelphia, Pennsylvania, USA},
        keywords = {haskell, kinds, polymorphism, promotion},
@@ -330,7 +329,7 @@ Publisher: Association for Computing Machinery},
        booktitle = {Central {European} {Functional} {Programming} {School}: 5th {Summer} {School}, {CEFP} 2013, {Cluj}-{Napoca}, {Romania}, {July} 8-20, 2013, {Revised} {Selected} {Papers}},
        publisher = {Springer International Publishing},
        author = {Gibbons, Jeremy},
-       editor = {Zsók, Viktória and Horváth, Zoltán and Csató, Lehel},
+       editor = {Zs\'{o}k, Vikt\'{o}ria and Horv\'{a}th, Zolt\'{a}n and Csat\'{o}, Lehel},
        year = {2015},
        doi = {10.1007/978-3-319-15940-9_1},
        pages = {1--28},
@@ -348,17 +347,6 @@ Publisher: Association for Computing Machinery},
        file = {thesis_final.pdf:/home/mrl/.local/share/zotero/storage/Y9QWGGB9/thesis_final.pdf:application/pdf},
 }
 
-@phdthesis{alimarine_generic_2005,
-       address = {Nijmegen},
-       type = {PhD Thesis},
-       title = {Generic {Functional} {Programming}},
-       language = {en},
-       school = {Radboud University},
-       author = {Alimarine, Artem},
-       year = {2005},
-       file = {Alimarine - Generic Functional Programming.pdf:/home/mrl/.local/share/zotero/storage/PDTS3SGX/Alimarine - Generic Functional Programming.pdf:application/pdf},
-}
-
 @phdthesis{de_boer_secure_2020,
        address = {Nijmegen},
        type = {Bachelor's {Thesis}},
@@ -387,7 +375,7 @@ Publisher: Association for Computing Machinery},
        volume = {1},
        booktitle = {{PARLE}, {Parallel} {Architectures} and {Languages} {Europe}},
        publisher = {Springer Verlag},
-       author = {Barendregt, HP and van Eekelen, MCJD and Glauert, JRW and Kennaway, JR and Plasmeijer, MJ and Sleep, MR},
+       author = {Barendregt, H.P. and {\noopsort{Eekelen}van Eekelen}, M.C.J.D and Glauert, J.R.W. and Kennaway, J.R. and Plasmeijer, M.J. and Sleep, M.R.},
        year = {1987},
        pages = {159--174},
        file = {barh87-Lean.ps.gz:/home/mrl/.local/share/zotero/storage/63FBHND7/barh87-Lean.ps.gz:application/gzip;barh87-Lean.ps.gz:/home/mrl/.local/share/zotero/storage/6H2UKQGZ/barh87-Lean.ps.gz:application/gzip},
@@ -458,7 +446,7 @@ Publisher: Association for Computing Machinery},
 @article{dube_bit:_2000,
        title = {{BIT}: {A} very compact {Scheme} system for embedded applications},
        journal = {Proceedings of the Fourth Workshop on Scheme and Functional Programming},
-       author = {Dubé, Danny},
+       author = {Dub\'{e}, Danny},
        year = {2000},
        file = {dube.ps:/home/mrl/.local/share/zotero/storage/RNG6V7HT/dube.ps:application/postscript},
 }
@@ -467,10 +455,9 @@ Publisher: Association for Computing Machinery},
        title = {{PICBIT}: {A} {Scheme} system for the {PIC} microcontroller},
        booktitle = {Proceedings of the {Fourth} {Workshop} on {Scheme} and {Functional} {Programming}},
        publisher = {Citeseer},
-       author = {Feeley, Marc and Dubé, Danny},
+       author = {Feeley, Marc and Dub\'{e}, Danny},
        year = {2003},
        pages = {7--15},
-       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},
 }
 
 @inproceedings{st-amour_picobit:_2009,
@@ -587,7 +574,7 @@ used to consume services on the internet. It fits nicely into existing iTasks pr
 few changes in existing programs.},
        language = {en},
        school = {Radboud University},
-       author = {Böhm, Haye},
+       author = {B\"{o}hm, Haye},
        month = jan,
        year = {2019},
        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},
@@ -669,6 +656,17 @@ few changes in existing programs.},
        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},
 }
 
+@phdthesis{alimarine_generic_2005,
+       address = {Nijmegen},
+       type = {{PhD} {Thesis}},
+       title = {Generic {Functional} {Programming}},
+       language = {en},
+       school = {Radboud University},
+       author = {Alimarine, Artem},
+       year = {2005},
+       file = {Alimarine - Generic Functional Programming.pdf:/home/mrl/.local/share/zotero/storage/L4THNJHB/Alimarine - Generic Functional Programming.pdf:application/pdf},
+}
+
 @inproceedings{wand_continuation-based_1980,
        address = {Stanford University, California, United States},
        title = {Continuation-based multiprocessing},
@@ -742,7 +740,7 @@ few changes in existing programs.},
        shorttitle = {Exchanging sources between {Clean} and {Haskell}},
        number = {11},
        journal = {ACM Sigplan Notices},
-       author = {van Groningen, John and van Noort, Thomas and Achten, Peter and Koopman, Pieter and Plasmeijer, Rinus},
+       author = {{\noopsort{Groningen}van Groningen}, John and {\noopsort{Noort}van Noort}, Thomas and Achten, Peter and Koopman, Pieter and Plasmeijer, Rinus},
        year = {2010},
        pages = {49--60},
        file = {groj10-Haskell_front_end_Clean.pdf:/home/mrl/.local/share/zotero/storage/WVZWX8WT/groj10-Haskell_front_end_Clean.pdf:application/pdf},
@@ -811,7 +809,7 @@ few changes in existing programs.},
        month = oct,
        year = {2019},
        note = {Place: New York, NY, USA
-Publisher: Association for Computing Machinery},
+Publisher: ACM},
        keywords = {aspect-oriented programming, generative programming, macro systems, meta-object protocols, Metaprogramming, multistage languages, reflection},
        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},
 }
@@ -845,8 +843,8 @@ Publisher: Association for Computing Machinery},
        month = oct,
        year = {2008},
        note = {Place: New York, NY, USA
-Publisher: Association for Computing Machinery},
-       keywords = {domain specific languages, compile-time meta-programming, Syntax extension},
+Publisher: ACM},
+       keywords = {compile-time meta-programming, domain specific languages, Syntax extension},
        file = {Tratt - 2008 - Domain Specific Language Implementation via Compil.pdf:/home/mrl/.local/share/zotero/storage/HHGYJK4H/Tratt - 2008 - Domain Specific Language Implementation via Compil.pdf:application/pdf},
 }
 
@@ -999,7 +997,7 @@ Publisher: Association for Computing Machinery},
        doi = {10.1017/S0956796802004574},
        number = {3},
        journal = {Journal of Functional Programming},
-       author = {Elliott, Conal and Finne, Sigbjørn and de Moor, Oege},
+       author = {Elliott, Conal and Finne, Sigbjørn and {\noopsort{Moor}de Moor}, Oege},
        year = {2003},
        note = {Publisher: Cambridge University Press},
        pages = {455--481},
@@ -1013,7 +1011,7 @@ Publisher: Association for Computing Machinery},
        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.},
        booktitle = {Domain-{Specific} {Program} {Generation}: {International} {Seminar}, {Dagstuhl} {Castle}, {Germany}, {March} 23-28, 2003. {Revised} {Papers}},
        publisher = {Springer Berlin Heidelberg},
-       author = {Czarnecki, Krzysztof and O'Donnell, John T. and Striegnitz, Jörg and Taha, Walid},
+       author = {Czarnecki, Krzysztof and O'Donnell, John T. and Striegnitz, J\"{o}rg and Taha, Walid},
        editor = {Lengauer, Christian and Batory, Don and Consel, Charles and Odersky, Martin},
        year = {2004},
        doi = {10.1007/978-3-540-25935-0_4},
@@ -1059,12 +1057,11 @@ Publisher: Association for Computing Machinery},
        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.},
        booktitle = {Proceedings of the 2003 {ACM} {SIGPLAN} {International} {Workshop} on {Types} in {Languages} {Design} and {Implementation}},
        publisher = {ACM},
-       author = {Lämmel, Ralf and Peyton Jones, Simon},
+       author = {L\"{a}mmel, Ralf and Peyton Jones, Simon},
        year = {2003},
        note = {event-place: New Orleans, Louisiana, USA},
        keywords = {generic programming, rank-2 types, traversal, type cast},
        pages = {26--37},
-       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},
 }
 
 @inproceedings{bawden_quasiquotation_1999,
@@ -1106,8 +1103,8 @@ Publisher: Association for Computing Machinery},
        publisher = {ACM},
        author = {Shioda, Masato and Iwasaki, Hideya and Sato, Shigeyuki},
        year = {2014},
-       note = {event-place: Västerås, Sweden},
-       keywords = {Metaprogramming, D language, Embedded domain specific languages, Library},
+       note = {event-place: V\"{a}ster\r{a}s, Sweden},
+       keywords = {D language, Embedded domain specific languages, Library, Metaprogramming},
        pages = {63--72},
        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},
 }
@@ -1121,12 +1118,11 @@ Publisher: Association for Computing Machinery},
        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.},
        booktitle = {Proceedings of the 4th {ACM} {Symposium} on {Haskell}},
        publisher = {ACM},
-       author = {Duregård, Jonas and Jansson, Patrik},
+       author = {Dureg\r{a}rd, Jonas and Jansson, Patrik},
        year = {2011},
        note = {event-place: Tokyo, Japan},
        keywords = {domain specific languages, metaprogramming},
        pages = {107--117},
-       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},
 }
 
 @inproceedings{eisenberg_promoting_2014,
@@ -1141,7 +1137,7 @@ Publisher: Association for Computing Machinery},
        author = {Eisenberg, Richard A. and Stolarek, Jan},
        year = {2014},
        note = {event-place: Gothenburg, Sweden},
-       keywords = {Haskell, defunctionalization, type-level programming},
+       keywords = {defunctionalization, Haskell, type-level programming},
        pages = {95--106},
        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},
 }
@@ -1158,7 +1154,7 @@ Publisher: Association for Computing Machinery},
        author = {Viera, Marcos and Balestrieri, Florent and Pardo, Alberto},
        year = {2018},
        note = {event-place: Lowell, MA, USA},
-       keywords = {Haskell, EDSL, Attribute Grammars, Dynamics, Staging},
+       keywords = {Attribute Grammars, Dynamics, EDSL, Haskell, Staging},
        pages = {95--106},
        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},
 }
@@ -1169,11 +1165,10 @@ Publisher: Association for Computing Machinery},
        doi = {10.1017/S0956796800001817},
        number = {3},
        journal = {Journal of Functional Programming},
-       author = {Läufer, Konstantin},
+       author = {L\"{a}ufer, Konstantin},
        year = {1996},
        note = {Publisher: Cambridge University Press},
        pages = {485--518},
-       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},
 }
 
 @incollection{hinze_fun_2003,
@@ -1247,7 +1242,7 @@ Publisher: Association for Computing Machinery},
        author = {Gibbons, Jeremy and Wu, Nicolas},
        year = {2014},
        note = {event-place: Gothenburg, Sweden},
-       keywords = {domain-specific languages, deep and shallow embedding, folds},
+       keywords = {deep and shallow embedding, domain-specific languages, folds},
        pages = {339--347},
        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},
 }
@@ -1278,11 +1273,10 @@ Publisher: Association for Computing Machinery},
        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.},
        booktitle = {Proceedings of the 23rd {ACM} {SIGPLAN}-{SIGACT} {Symposium} on {Principles} of {Programming} {Languages}},
        publisher = {ACM},
-       author = {Odersky, Martin and Läufer, Konstantin},
+       author = {Odersky, Martin and L\"{a}ufer, Konstantin},
        year = {1996},
        note = {event-place: St. Petersburg Beach, Florida, USA},
        pages = {54--67},
-       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},
 }
 
 @inproceedings{najd_everything_2016,
@@ -1297,7 +1291,7 @@ Publisher: Association for Computing Machinery},
        author = {Najd, Shayan and Lindley, Sam and Svenningsson, Josef and Wadler, Philip},
        year = {2016},
        note = {event-place: St. Petersburg, FL, USA},
-       keywords = {EDSL, domain-specific language, DSL, embedded language, normalisation, QDSL, quotation, subformula principle},
+       keywords = {domain-specific language, DSL, EDSL, embedded language, normalisation, QDSL, quotation, subformula principle},
        pages = {25--36},
        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},
 }
@@ -1336,7 +1330,7 @@ Publisher: Association for Computing Machinery},
        title = {Clean {Language} {Report} version 3.1},
        urldate = {2021-12-22},
        institution = {Institute for Computing and Information Sciences},
-       author = {Plasmeijer, Rinus and van Eekelen, Marko and van Groningen, John},
+       author = {Plasmeijer, Rinus and {\noopsort{Eekelen}van Eekelen}, Marko and {\noopsort{Groningen}van Groningen}, John},
        month = dec,
        year = {2021},
        pages = {127},
@@ -1365,11 +1359,10 @@ Publisher: Association for Computing Machinery},
        abstract = {Concurrent Clean is an experimental, lazy, higher-order parallel functional programming language based on term graph rewriting. An important difference with other languages is that in Clean graphs are manipulated and not terms. This can be used by the programmer to control communication and sharing of computation. Cyclic structures can be defined. Concurrent Clean furthermore allows to control the (parallel) order of evaluation to make efficient evaluation possible. With help of sequential annotations the default lazy evaluation can be locally changed into eager evaluation. The language enables the definition of partially strict data structures which make a whole new class of algorithms feasible in a functional language. A powerful and fast strictness analyser is incorporated in the system. The quality of the code generated by the Clean compiler has been greatly improved such that it is one of the best code generators for a lazy functional language. Two very powerful parallel annotations enable the programmer to define concurrent functional programs with arbitrary process topologies. Concurrent Clean is set up in such a way that the efficiency achieved for the sequential case can largely be maintained for a parallel implementation on loosely coupled parallel machine architectures.},
        booktitle = {{PARLE} '91 {Parallel} {Architectures} and {Languages} {Europe}},
        publisher = {Springer Berlin Heidelberg},
-       author = {Nöcker, E. G. J. M. H. and Smetsers, J. E. W. and van Eekelen, M. C. J. D. and Plasmeijer, M. J.},
+       author = {N\"{o}cker, E. G. J. M. H. and Smetsers, J. E. W. and {\noopsort{Eekelen}van Eekelen}, M. C. J. D. and Plasmeijer, M. J.},
        editor = {Aarts, Emile H. L. and van Leeuwen, Jan and Rem, Martin},
        year = {1991},
        pages = {202--219},
-       file = {Nöcker et al. - 1991 - Concurrent clean.pdf:/home/mrl/.local/share/zotero/storage/XHTNR7BR/Nöcker et al. - 1991 - Concurrent clean.pdf:application/pdf},
 }
 
 @inproceedings{staps_lazy_2019,
@@ -1381,7 +1374,7 @@ Publisher: Association for Computing Machinery},
        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.},
        booktitle = {Proceedings of the 31st {Symposium} on {Implementation} and {Application} of {Functional} {Languages}},
        publisher = {ACM},
-       author = {Staps, Camil and van Groningen, John and Plasmeijer, Rinus},
+       author = {Staps, Camil and {\noopsort{Groningen}van Groningen}, John and Plasmeijer, Rinus},
        year = {2019},
        note = {event-place: Singapore, Singapore},
        keywords = {functional programming, interpreters, laziness, sandboxing, web-assembly},
@@ -1492,7 +1485,7 @@ Publisher: Association for Computing Machinery},
        booktitle = {Central {European} {Functional} {Programming} {School}: 6th {Summer} {School}, {CEFP} 2015, {Budapest}, {Hungary}, {July} 6–10, 2015, {Revised} {Selected} {Papers}},
        publisher = {Springer International Publishing},
        author = {Koopman, Pieter and Plasmeijer, Rinus},
-       editor = {Zsók, Viktória and Porkoláb, Zoltán and Horváth, Zoltán},
+       editor = {Zs\'{o}k, Vikt\'{o}ria and Porkol\'{a}b, Zolt\'{a}n and Horv\'{a}th, Zolt\'{a}n},
        year = {2019},
        doi = {10.1007/978-3-030-28346-9_8},
        pages = {283--340},
@@ -1522,7 +1515,7 @@ Publisher: Association for Computing Machinery},
        month = jul,
        year = {1988},
        note = {Place: New York, NY, USA
-Publisher: Association for Computing Machinery},
+Publisher: ACM},
        pages = {470--502},
        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},
 }
@@ -1586,8 +1579,8 @@ Publisher: Association for Computing Machinery},
        month = feb,
        year = {2021},
        note = {Place: New York, NY, USA
-Publisher: Association for Computing Machinery},
-       keywords = {Internet of Things, design principles, non functional requirements, notation, software design tools, software engineering},
+Publisher: ACM},
+       keywords = {design principles, Internet of Things, non functional requirements, notation, software design tools, software engineering},
        file = {Alhirabi et al. - 2021 - Security and Privacy Requirements for the Internet.pdf:/home/mrl/.local/share/zotero/storage/7UN4IF62/Alhirabi et al. - 2021 - Security and Privacy Requirements for the Internet.pdf:text/html},
 }
 
@@ -1667,7 +1660,7 @@ Publisher: Association for Computing Machinery},
        author = {Wadler, Philip},
        month = nov,
        year = {1998},
-       note = {e-mail message, accessed on 2021-02-24},
+       note = {e-mail message, accessed-on: 2021-02-24},
 }
 
 @misc{margaret_deuter_rhapsody_2015,
@@ -1737,7 +1730,7 @@ Publisher: Association for Computing Machinery},
        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.},
        booktitle = {Functional {Programming}, {Glasgow} 1992},
        publisher = {Springer London},
-       author = {Achten, Peter and van Groningen, John and Plasmeijer, Rinus},
+       author = {Achten, Peter and {\noopsort{Groningen}van Groningen}, John and Plasmeijer, Rinus},
        editor = {Launchbury, John and Sansom, Patrick},
        year = {1993},
        pages = {1--17},
@@ -1753,7 +1746,7 @@ Publisher: Association for Computing Machinery},
        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.},
        booktitle = {Proceedings of the 13th {ACM} {SIGPLAN} {International} {Symposium} on {Haskell}},
        publisher = {ACM},
-       author = {Pickering, Matthew and Löh, Andres and Wu, Nicolas},
+       author = {Pickering, Matthew and L\"{o}h, Andres and Wu, Nicolas},
        year = {2020},
        note = {event-place: Virtual Event, USA},
        keywords = {generic programming, staging},
@@ -1768,11 +1761,11 @@ Publisher: Association for Computing Machinery},
        abstract = {Multi-stage programming using typed code quotation is an established technique for writing optimizing code generators with strong type-safety guarantees. Unfortunately, quotation in Haskell interacts poorly with type classes, making it difficult to write robust multi-stage programs. We study this unsound interaction and propose a resolution, staged type class constraints, which we formalize in a source calculus $\lambda$⇒ that elaborates into an explicit core calculus F. We show type soundness of both calculi, establishing that well-typed, well-staged source programs always elaborate to well-typed, well-staged core programs, and prove beta and eta rules for code quotations. Our design allows programmers to incorporate type classes into multi-stage programs with confidence. Although motivated by Haskell, it is also suitable as a foundation for other languages that support both overloading and quotation.},
        number = {POPL},
        journal = {Proc. ACM Program. Lang.},
-       author = {Xie, Ningning and Pickering, Matthew and Löh, Andres and Wu, Nicolas and Yallop, Jeremy and Wang, Meng},
+       author = {Xie, Ningning and Pickering, Matthew and L\"{o}h, Andres and Wu, Nicolas and Yallop, Jeremy and Wang, Meng},
        month = jan,
        year = {2022},
        note = {Place: New York, NY, USA
-Publisher: Association for Computing Machinery},
+Publisher: ACM},
        keywords = {Staging, Type Classes, Typed Template Haskell},
        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},
 }
@@ -1799,12 +1792,11 @@ Publisher: Association for Computing Machinery},
        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.},
        booktitle = {Proceedings of the 10th {ACM} {SIGPLAN} {Workshop} on {Generic} {Programming}},
        publisher = {ACM},
-       author = {de Vries, Edsko and Löh, Andres},
+       author = {de Vries, Edsko and L\"{o}h, Andres},
        year = {2014},
        note = {event-place: Gothenburg, Sweden},
-       keywords = {lenses, datatype-generic programming, generic views, json, metadata, sums of products, universes},
+       keywords = {datatype-generic programming, generic views, json, lenses, metadata, sums of products, universes},
        pages = {83--94},
-       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},
 }
 
 @article{willis_staged_2020,
@@ -1818,7 +1810,7 @@ Publisher: Association for Computing Machinery},
        month = aug,
        year = {2020},
        note = {Place: New York, NY, USA
-Publisher: Association for Computing Machinery},
+Publisher: ACM},
        keywords = {combinators, meta-programming, parsers},
        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},
 }
@@ -1835,7 +1827,7 @@ Publisher: Association for Computing Machinery},
        author = {Pickering, Matthew and Wu, Nicolas and Kiss, Csongor},
        year = {2019},
        note = {event-place: Berlin, Germany},
-       keywords = {metaprogramming, staging, implicits},
+       keywords = {implicits, metaprogramming, staging},
        pages = {71--84},
        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},
 }
@@ -1845,7 +1837,7 @@ Publisher: Association for Computing Machinery},
        volume = {abs/2112.03653},
        doi = {10.48550/arXiv.2112.03653},
        journal = {CoRR},
-       author = {Pickering, Matthew and Löh, Andres and Wu, Nicolas},
+       author = {Pickering, Matthew and L\"{o}h, Andres and Wu, Nicolas},
        year = {2021},
        note = {arXiv: 2112.03653},
        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},
@@ -1888,7 +1880,7 @@ Publisher: Association for Computing Machinery},
        month = aug,
        year = {2022},
        note = {Place: New York, NY, USA
-Publisher: Association for Computing Machinery},
+Publisher: ACM},
        keywords = {circuit synthesis, generators, hardware description languages},
        file = {Materzok - 2022 - Generating Circuits with Generators.pdf:/home/mrl/.local/share/zotero/storage/LH4Q8J73/Materzok - 2022 - Generating Circuits with Generators.pdf:application/pdf},
 }
@@ -1953,7 +1945,7 @@ Publisher: Association for Computing Machinery},
        author = {McDonell, Trevor L. and Meredith, Joshua D. and Keller, Gabriele},
        year = {2022},
        note = {event-place: Ljubljana, Slovenia},
-       keywords = {Haskell, algebraic data types, embedded languages, pattern matching},
+       keywords = {algebraic data types, embedded languages, Haskell, pattern matching},
        pages = {123--136},
        file = {2108.13114.pdf:/home/mrl/.local/share/zotero/storage/AJAT8AXI/2108.13114.pdf:application/pdf},
 }
@@ -2048,7 +2040,7 @@ Publisher: Association for Computing Machinery},
        doi = {https://doi.org/10.1016/j.jclepro.2020.122877},
        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.},
        journal = {Journal of Cleaner Production},
-       author = {Nižetić, Sandro and Šolić, Petar and González-de-Artaza, Diego López-de-Ipiña and Patrono, Luigi},
+       author = {Ni\v{z}eti\'{c}, Sandro and \v{S}oli\'{c}, Petar and Gonz\'{a}lez-de-Artaza, Diego L\'{o}pez-de-Ipiña and Patrono, Luigi},
        year = {2020},
        keywords = {IoT, Energy, Environment, Smart city, SpliTech2020, Sustainability},
        pages = {122877},
@@ -2086,7 +2078,7 @@ Publisher: Association for Computing Machinery},
        booktitle = {Trends in {Functional} {Programming}},
        publisher = {Springer International Publishing},
        author = {Koopman, Pieter and Michels, Steffen and Plasmeijer, Rinus},
-       editor = {Zsók, Viktória and Hughes, John},
+       editor = {Zs\'{o}k, Vikt\'{o}ria and Hughes, John},
        year = {2021},
        pages = {44--66},
        file = {978-3-030-83978-9_3.pdf:/home/mrl/.local/share/zotero/storage/6654TJL7/978-3-030-83978-9_3.pdf:application/pdf},
@@ -2121,7 +2113,7 @@ Publisher: Association for Computing Machinery},
        month = sep,
        year = {2019},
        note = {Place: New York, NY, USA
-Publisher: Association for Computing Machinery},
+Publisher: ACM},
        pages = {23--27},
        file = {Hester and Sorber - 2019 - Batteries Not Included.pdf:/home/mrl/.local/share/zotero/storage/LT53WV8K/Hester and Sorber - 2019 - Batteries Not Included.pdf:application/pdf},
 }
@@ -2133,12 +2125,11 @@ Publisher: Association for Computing Machinery},
        abstract = {Domain-Specific Languages (DSLs) can be regarded as User Interfaces (UIs) because they bridge the gap between the domain experts and the computation platforms. Usability of DSLs by domain experts is a key factor for their successful adoption. The few reports supporting improvement claims are persuasive, but mostly anecdotal. Systematic literature reviews show that evidences on the effects of the introduction of DSLs are actually very scarce. In particular, the evaluation of usability is often skipped, relaxed, or at least omitted from papers reporting the development of DSLs. The few exceptions mostly take place at the end of the development process, when fixing problems is already too expensive. A systematic approach, based on techniques for the experimental evaluation of UIs, should be used to assess suitability of new DSLs. This chapter presents a general experimental evaluation model, tailored for DSLs’ experimental evaluation, and instantiates it in several DSL’s evaluation examples.},
        booktitle = {Software {Design} and {Development}: {Concepts}, {Methodologies}, {Tools}, and {Applications}},
        publisher = {IGI Global},
-       author = {Barišic, Ankica and Amaral, Vasco and Goulão, Miguel and Barroca, Bruno},
+       author = {Bari\v{s}ic, Ankica and Amaral, Vasco and Goul\~{a}o, Miguel and Barroca, Bruno},
        editor = {Management Association, Information Resources},
        year = {2014},
        doi = {10.4018/978-1-4666-4301-7.ch098},
        pages = {2120--2141},
-       file = {Barišic et al. - 2014 - Evaluating the Usability of Domain-Specific Langua.pdf:/home/mrl/.local/share/zotero/storage/ARTGSHZK/Barišic et al. - 2014 - Evaluating the Usability of Domain-Specific Langua.pdf:application/pdf},
 }
 
 @article{van_der_aalst_workflow_2003,
@@ -2149,7 +2140,7 @@ Publisher: Association for Computing Machinery},
        abstract = {Differences in features supported by the various contemporary commercial workflow management systems point to different insights of suitability and different levels of expressive power. The challenge, which we undertake in this paper, is to systematically address workflow requirements, from basic to complex. Many of the more complex requirements identified, recur quite frequently in the analysis phases of workflow projects, however their implementation is uncertain in current products. Requirements for workflow languages are indicated through workflow patterns. In this context, patterns address business requirements in an imperative workflow style expression, but are removed from specific workflow languages. The paper describes a number of workflow patterns addressing what we believe identify comprehensive workflow functionality. These patterns provide the basis for an in-depth comparison of a number of commercially availablework flow management systems. As such, this paper can be seen as the academic response to evaluations made by prestigious consulting companies. Typically, these evaluations hardly consider the workflow modeling language and routing capabilities, and focus more on the purely technical and commercial aspects.},
        number = {1},
        journal = {Distributed and Parallel Databases},
-       author = {van der Aalst, W.M.P. and ter Hofstede, A.H.M. and Kiepuszewski, B. and Barros, A.P.},
+       author = {{\noopsort{Aalst}van der Aalst}, W.M.P. and {\noopsort{Hofstede}ter Hofstede}, A.H.M. and Kiepuszewski, B. and Barros, A.P.},
        month = jul,
        year = {2003},
        pages = {5--51},
@@ -2175,8 +2166,8 @@ Publisher: Association for Computing Machinery},
 @techreport{transforma_insights_current_2023,
        title = {Current {IoT} {Forecast} {Highlights}},
        url = {https://transformainsights.com/research/forecast/highlights},
-       institution = {{{{{Transforma Insights}}}}},
-       author = {{{{{Transforma Insights}}}}},
+       institution = {{Transforma Insights}},
+       author = {{Transforma Insights}},
        month = jan,
        year = {2023},
        note = {accessed-on: 2023-01-19},
@@ -2198,7 +2189,7 @@ Publisher: Association for Computing Machinery},
        abstract = {Generic programming allows you to write a function once, and use it many times at different types. A lot of good foundational work on generic programming has been done. The goal of this paper is to propose a practical way of supporting generic programming within the Haskell language, without radically changing the language or its type system. The key idea is to present generic programming as a richer language in which to write default method definitions in a class declaration. On the way, we came across a separate issue, concerning type-class overloading where higher kinds are involved. We propose a simple type-class system extension to allow the programmer to write richer contexts than is currently possible.},
        number = {1},
        journal = {Electronic Notes in Theoretical Computer Science},
-       author = {Hinze, Ralf and Jones, Simon Peyton},
+       author = {Hinze, Ralf and Peyton Jones, Simon},
        year = {2001},
        pages = {5--35},
        file = {Hinze and Jones - 2001 - Derivable Type Classes.pdf:/home/mrl/.local/share/zotero/storage/33IF2HMZ/Hinze and Jones - 2001 - Derivable Type Classes.pdf:application/pdf},
index 1a2e403..adc5ff9 100644 (file)
@@ -1,4 +1,4 @@
-
+@PREAMBLE{ {\providecommand{\noopsort}[1]{}} }
 @inproceedings{lubbers_interpreting_2019,
        address = {New York, NY, USA},
        series = {{IFL} '19},
@@ -33,7 +33,7 @@
 }
 
 @inproceedings{lubbers_tiered_2020,
-       address = {Malmö},
+       address = {Malm\"{o}},
        series = {{IoT} '20},
        title = {Tiered versus {Tierless} {IoT} {Stacks}: {Comparing} {Smart} {Campus} {Software} {Architectures}},
        isbn = {978-1-4503-8758-3},
@@ -43,7 +43,7 @@
        publisher = {ACM},
        author = {Lubbers, Mart and Koopman, Pieter and Ramsingh, Adrian and Singer, Jeremy and Trinder, Phil},
        year = {2020},
-       note = {event-place: Malmö, Sweden},
+       note = {event-place: Malm\"{o}, Sweden},
        keywords = {internet of things, domain specific languages, network reliability, software architectures},
        file = {Lubbers et al. - 2020 - Tiered versus Tierless IoT Stacks Comparing Smart.pdf:/home/mrl/.local/share/zotero/storage/YY3MJRZ6/Lubbers et al. - 2020 - Tiered versus Tierless IoT Stacks Comparing Smart.pdf:application/pdf},
 }
        title = {{SusTrainable}: {Promoting} {Sustainability} as a {Fundamental} {Driver} in {Software} {Development} {Training} and {Education}. {Teacher} {Training}, {November} 1-5, {Nijmegen}, {The} {Netherlands}. {Revised} lecture notes},
        copyright = {Creative Commons Attribution Non Commercial No Derivatives 4.0 International},
        publisher = {arXiv},
-       author = {Koopman, Pieter and Lubbers, Mart and Fernandes, João Paulo},
+       author = {Koopman, Pieter and Lubbers, Mart and Fernandes, Jo\~{a}o Paulo},
        year = {2022},
        doi = {10.48550/ARXIV.2204.13993},
        keywords = {Computers and Society (cs.CY), FOS: Computer and information sciences, Software Engineering (cs.SE)},
        month = nov,
        year = {2022},
        note = {Place: New York, NY, USA
-Publisher: Association for Computing Machinery},
+Publisher: ACM},
        keywords = {access control, internet-of-things, policy language, privilege escalation, Smart home system, IoT stacks, Tierless languages},
 }
 
index 701b157..98ea756 100644 (file)
@@ -1,4 +1,4 @@
-
+@PREAMBLE{ {\providecommand{\noopsort}[1]{}} }
 @Article{        sethi2017internet,
   title                = {Internet of things: architectures, protocols, and
                  applications},
@@ -99,7 +99,7 @@
 }
 
 @Article{        levis_mate_2002,
-  title                = {Maté: {A} tiny virtual machine for sensor networks},
+  title                = {Mat\'{e}: {A} tiny virtual machine for sensor networks},
   volume       = {37},
   number       = {10},
   journal      = {ACM Sigplan Notices},
 }
 
 @InProceedings{          motta2018challenges,
-  author       = {Motta, Rebeca C. and de Oliveira, K\'{a}thia M. and
-                 Travassos, Guilherme H.},
+  author       = {Motta, Rebeca C. and {\noopsort{Oliveira}de Oliveira}, K\'{a}thia M. and Travassos, Guilherme H.},
   title                = {On Challenges in Engineering IoT Software Systems},
   year         = {2018},
   isbn         = {9781450365031},
                  and {Application} of {Functional} {Programming}
                  {Languages}},
   publisher    = {ACM},
-  author       = {Oortgiese, Arjan and van Groningen, John and Achten, Peter
+  author       = {Oortgiese, Arjan and {\noopsort{Groningen}van Groningen}, John and Achten, Peter
                  and Plasmeijer, Rinus},
   year         = {2017},
   pages                = {7},
                  Functional L.pdf:application/pdf}
 }
 
-@InProceedings{          10.1145/3281366.3281370,
-  author       = {Shibanai, Kazuhiro and Watanabe, Takuo},
-  title                = {Distributed Functional Reactive Programming on Actor-Based
-                 Runtime},
-  year         = {2018},
-  isbn         = {9781450360661},
-  publisher    = {ACM},
-  address      = {New York, NY, USA},
-  doi          = {10.1145/3281366.3281370},
-  abstract     = {Reactive programming over a network is a challenging task
-                 because efficient elimination of temporary violations of
-                 data flow invariants, known as glitches, in a distributed
-                 setting is still an open issue. In this paper, we propose a
-                 method for constructing a distributed reactive programming
-                 system of which runtime guarantees the properties of single
-                 source glitch-freedom and the robustness against
-                 out-of-order messages. Based on the method, we developed a
-                 purely functional reactive programming language XFRP whose
-                 compiler produces Erlang code. Using some examples, we show
-                 that the proposed method is beneficial for constructing
-                 distributed reactive applications without suffering from
-                 inconsistencies.},
-  booktitle    = {Proceedings of the 8th ACM SIGPLAN International Workshop
-                 on Programming Based on Actors, Agents, and Decentralized
-                 Control},
-  pages                = {13–22},
-  numpages     = {10},
-  keywords     = {Distributed Functional Reactive Programming, Erlang,
-                 Glitch Freedom, Synchronization, Actor-Based Runtime
-                 System},
-  location     = {Boston, MA, USA},
-  series       = {AGERE 2018}
-}
-
 @InProceedings{          suzuki_cfrp_2017,
   address      = {The University of The Philippines Cebu, Cebu City, The
                  Philippines},
 }
 
 @InProceedings{          10.1145/2661136.2661146,
-  author       = {Philips, Laure and De Roover, Coen and Van Cutsem, Tom and
-                 De Meuter, Wolfgang},
+  author       = {Philips, Laure and {\noopsort{Roover}de Roover}, Coen and {\noopsort{Cutsem}van Cutsem}, Tom and {\noopsort{Meuter}de Meuter}, Wolfgang},
   title                = {Towards Tierless Web Development without Tierless
                  Languages},
   year         = {2014},
                  - 2018 - Security analysis of the iTasks
                  framework.pdf:application/pdf}
 }
-
-@InProceedings{          steenvoorden2019tophat,
-  author       = {Steenvoorden, Tim and Naus, Nico and Klinik, Markus},
-  title                = {TopHat: A Formal Foundation for Task-Oriented
-                 Programming},
-  year         = {2019},
-  isbn         = {9781450372497},
-  publisher    = {ACM},
-  address      = {New York, NY, USA},
-  doi          = {10.1145/3354166.3354182},
-  booktitle    = {Proceedings of the 21st International Symposium on
-                 Principles and Practice of Declarative Programming},
-  articleno    = {17},
-  numpages     = {13},
-  location     = {Porto, Portugal},
-  series       = {PPDP '19}
-}
index 0b88e75..59d20b9 100644 (file)
--- a/latexmkrc
+++ b/latexmkrc
@@ -1,3 +1,5 @@
+ensure_path( 'TEXINPUTS', './texmf//' );
+
 # Make and clean glossaries
 add_cus_dep('glo', 'gls', 0, 'run_makeglossaries');
 add_cus_dep('glo-abr', 'gls-abr', 0, 'run_makeglossaries');
@@ -46,3 +48,4 @@ $pdf_mode = 1;
 $pdflatex = 'pdflatex %O %S || (echo === Deleting %Y%R.sta ...; rm -v %Y%R.sta; false)';
 
 $use_make = 1;
+
diff --git a/myabbrvnat.bst b/myabbrvnat.bst
new file mode 100644 (file)
index 0000000..a80e965
--- /dev/null
@@ -0,0 +1,1444 @@
+%% File: `abbrvnat.bst'
+%% A modification of `abbrv.bst' for use with natbib package 
+%%
+%% Copyright 1993-2007 Patrick W Daly
+%% Max-Planck-Institut f\"ur Sonnensystemforschung
+%% Max-Planck-Str. 2
+%% D-37191 Katlenburg-Lindau
+%% Germany
+%% E-mail: daly@mps.mpg.de
+%%
+%% This program can be redistributed and/or modified under the terms
+%% of the LaTeX Project Public License Distributed from CTAN
+%% archives in directory macros/latex/base/lppl.txt; either
+%% version 1 of the License, or any later version.
+%%
+ % Version and source file information:
+ % \ProvidesFile{natbst.mbs}[2007/11/26 1.93 (PWD)]
+ %
+ % BibTeX `plainnat' family
+ %   version 0.99b for BibTeX versions 0.99a or later,
+ %   for LaTeX versions 2.09 and 2e.
+ %
+ % For use with the `natbib.sty' package; emulates the corresponding
+ %   member of the `plain' family, but with author-year citations.
+ %
+ % With version 6.0 of `natbib.sty', it may also be used for numerical
+ %   citations, while retaining the commands \citeauthor, \citefullauthor,
+ %   and \citeyear to print the corresponding information.
+ %
+ % For version 7.0 of `natbib.sty', the KEY field replaces missing
+ %   authors/editors, and the date is left blank in \bibitem.
+ %
+ % Includes field EID for the sequence/citation number of electronic journals
+ %  which is used instead of page numbers.
+ %
+ % Includes fields ISBN and ISSN.
+ %
+ % Includes field URL for Internet addresses.
+ %
+ % Includes field DOI for Digital Object Idenfifiers.
+ %
+ % Works best with the url.sty package of Donald Arseneau.
+ %
+ % Works with identical authors and year are further sorted by
+ %   citation key, to preserve any natural sequence.
+ %
+ENTRY
+  { address
+    author
+    booktitle
+    chapter
+    doi
+    eid
+    edition
+    editor
+    howpublished
+    institution
+    isbn
+    issn
+    journal
+    key
+    month
+    note
+    number
+    organization
+    pages
+    publisher
+    school
+    series
+    title
+    type
+    url
+    urldate
+    volume
+    year
+  }
+  {}
+  { label extra.label sort.label short.list }
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+  #1 'mid.sentence :=
+  #2 'after.sentence :=
+  #3 'after.block :=
+}
+
+STRINGS { s t }
+
+FUNCTION {output.nonnull}
+{ 's :=
+  output.state mid.sentence =
+    { ", " * write$ }
+    { output.state after.block =
+        { add.period$ write$
+          newline$
+          "\newblock " write$
+        }
+        { output.state before.all =
+            'write$
+            { add.period$ " " * write$ }
+          if$
+        }
+      if$
+      mid.sentence 'output.state :=
+    }
+  if$
+  s
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+    'pop$
+    'output.nonnull
+  if$
+}
+
+FUNCTION {output.check}
+{ 't :=
+  duplicate$ empty$
+    { pop$ "empty " t * " in " * cite$ * warning$ }
+    'output.nonnull
+  if$
+}
+
+FUNCTION {fin.entry}
+{ add.period$
+  write$
+  newline$
+}
+
+FUNCTION {new.block}
+{ output.state before.all =
+    'skip$
+    { after.block 'output.state := }
+  if$
+}
+
+FUNCTION {new.sentence}
+{ output.state after.block =
+    'skip$
+    { output.state before.all =
+        'skip$
+        { after.sentence 'output.state := }
+      if$
+    }
+  if$
+}
+
+FUNCTION {not}
+{   { #0 }
+    { #1 }
+  if$
+}
+
+FUNCTION {and}
+{   'skip$
+    { pop$ #0 }
+  if$
+}
+
+FUNCTION {or}
+{   { pop$ #1 }
+    'skip$
+  if$
+}
+
+FUNCTION {new.block.checka}
+{ empty$
+    'skip$
+    'new.block
+  if$
+}
+
+FUNCTION {new.block.checkb}
+{ empty$
+  swap$ empty$
+  and
+    'skip$
+    'new.block
+  if$
+}
+
+FUNCTION {new.sentence.checka}
+{ empty$
+    'skip$
+    'new.sentence
+  if$
+}
+
+FUNCTION {new.sentence.checkb}
+{ empty$
+  swap$ empty$
+  and
+    'skip$
+    'new.sentence
+  if$
+}
+
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+    { pop$ "" }
+    'skip$
+  if$
+}
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+    { pop$ "" }
+    { "\emph{" swap$ * "}" * }
+  if$
+}
+
+INTEGERS { nameptr namesleft numnames }
+
+FUNCTION {format.names}
+{ 's :=
+  #1 'nameptr :=
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
+    { namesleft #0 > }
+    { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
+      nameptr #1 >
+        { namesleft #1 >
+            { ", " * t * }
+            { numnames #2 >
+                { "," * }
+                'skip$
+              if$
+              t "others" =
+                { " et~al." * }
+                { " and " * t * }
+              if$
+            }
+          if$
+        }
+        't
+      if$
+      nameptr #1 + 'nameptr :=
+      namesleft #1 - 'namesleft :=
+    }
+  while$
+}
+
+FUNCTION {format.key}
+{ empty$
+    { key field.or.null }
+    { "" }
+  if$
+}
+
+FUNCTION {format.authors}
+{ author empty$
+    { "" }
+    { author format.names }
+  if$
+}
+
+FUNCTION {format.editors}
+{ editor empty$
+    { "" }
+    { editor format.names
+      editor num.names$ #1 >
+        { ", editors" * }
+        { ", editor" * }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.isbn}
+{ isbn empty$
+    { "" }
+    { new.block "ISBN " isbn * }
+  if$
+}
+
+FUNCTION {format.issn}
+{ issn empty$
+    { "" }
+    { new.block "ISSN " issn * }
+  if$
+}
+
+FUNCTION {format.url}
+{ url empty$
+    { "" }
+    { new.block "URL \url{" url * "}" * }
+  if$
+}
+FUNCTION {format.urldate}
+{ urldate empty$
+    { "" }
+    {new.block  "accessed-on: " urldate * }
+    if$
+}
+
+FUNCTION {format.doi}
+{ doi empty$
+    { "" }
+    { new.block "\doi{" doi * "}" * }
+  if$
+}
+
+FUNCTION {format.title}
+{ title empty$
+    { "" }
+    { title "t" change.case$ }
+  if$
+}
+
+FUNCTION {format.full.names}
+{'s :=
+  #1 'nameptr :=
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
+    { namesleft #0 > }
+    { s nameptr
+      "{vv~}{ll}" format.name$ 't :=
+      nameptr #1 >
+        {
+          namesleft #1 >
+            { ", " * t * }
+            {
+              numnames #2 >
+                { "," * }
+                'skip$
+              if$
+              t "others" =
+                { " et~al." * }
+                { " and " * t * }
+              if$
+            }
+          if$
+        }
+        't
+      if$
+      nameptr #1 + 'nameptr :=
+      namesleft #1 - 'namesleft :=
+    }
+  while$
+}
+
+FUNCTION {author.editor.full}
+{ author empty$
+    { editor empty$
+        { "" }
+        { editor format.full.names }
+      if$
+    }
+    { author format.full.names }
+  if$
+}
+
+FUNCTION {author.full}
+{ author empty$
+    { "" }
+    { author format.full.names }
+  if$
+}
+
+FUNCTION {editor.full}
+{ editor empty$
+    { "" }
+    { editor format.full.names }
+  if$
+}
+
+FUNCTION {make.full.names}
+{ type$ "book" =
+  type$ "inbook" =
+  or
+    'author.editor.full
+    { type$ "proceedings" =
+        'editor.full
+        'author.full
+      if$
+    }
+  if$
+}
+
+FUNCTION {output.bibitem}
+{ newline$
+  "\bibitem[" write$
+  label write$
+  ")" make.full.names duplicate$ short.list =
+     { pop$ }
+     { * }
+   if$
+  "]{" * write$
+  cite$ write$
+  "}" write$
+  newline$
+  ""
+  before.all 'output.state :=
+}
+
+FUNCTION {n.dashify}
+{ 't :=
+  ""
+    { t empty$ not }
+    { t #1 #1 substring$ "-" =
+        { t #1 #2 substring$ "--" = not
+            { "--" *
+              t #2 global.max$ substring$ 't :=
+            }
+            {   { t #1 #1 substring$ "-" = }
+                { "-" *
+                  t #2 global.max$ substring$ 't :=
+                }
+              while$
+            }
+          if$
+        }
+        { t #1 #1 substring$ *
+          t #2 global.max$ substring$ 't :=
+        }
+      if$
+    }
+  while$
+}
+
+FUNCTION {format.date}
+{ year duplicate$ empty$
+    { "empty year in " cite$ * warning$
+       pop$ "" }
+    'skip$
+  if$
+  month empty$
+    'skip$
+    { month
+      " " * swap$ *
+    }
+  if$
+  extra.label *
+}
+
+FUNCTION {format.btitle}
+{ title emphasize
+}
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+    { "~" }
+    { " " }
+  if$
+  swap$ * *
+}
+
+FUNCTION {either.or.check}
+{ empty$
+    'pop$
+    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+  if$
+}
+
+FUNCTION {format.bvolume}
+{ volume empty$
+    { "" }
+    { "volume" volume tie.or.space.connect
+      series empty$
+        'skip$
+        { " of " * series emphasize * }
+      if$
+      "volume and number" number either.or.check
+    }
+  if$
+}
+
+FUNCTION {format.number.series}
+{ volume empty$
+    { number empty$
+        { series field.or.null }
+        { output.state mid.sentence =
+            { "number" }
+            { "Number" }
+          if$
+          number tie.or.space.connect
+          series empty$
+            { "there's a number but no series in " cite$ * warning$ }
+            { " in " * series * }
+          if$
+        }
+      if$
+    }
+    { "" }
+  if$
+}
+
+FUNCTION {format.edition}
+{ edition empty$
+    { "" }
+    { output.state mid.sentence =
+        { edition "l" change.case$ " edition" * }
+        { edition "t" change.case$ " edition" * }
+      if$
+    }
+  if$
+}
+
+INTEGERS { multiresult }
+
+FUNCTION {multi.page.check}
+{ 't :=
+  #0 'multiresult :=
+    { multiresult not
+      t empty$ not
+      and
+    }
+    { t #1 #1 substring$
+      duplicate$ "-" =
+      swap$ duplicate$ "," =
+      swap$ "+" =
+      or or
+        { #1 'multiresult := }
+        { t #2 global.max$ substring$ 't := }
+      if$
+    }
+  while$
+  multiresult
+}
+
+FUNCTION {format.pages}
+{ pages empty$
+    { "" }
+    { pages multi.page.check
+        { "pages" pages n.dashify tie.or.space.connect }
+        { "page" pages tie.or.space.connect }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.eid}
+{ eid empty$
+    { "" }
+    { "art." eid tie.or.space.connect }
+  if$
+}
+
+FUNCTION {format.vol.num.pages}
+{ volume field.or.null
+  number empty$
+    'skip$
+    { "\penalty0 (" number * ")" * *
+      volume empty$
+        { "there's a number but no volume in " cite$ * warning$ }
+        'skip$
+      if$
+    }
+  if$
+  pages empty$
+    'skip$
+    { duplicate$ empty$
+        { pop$ format.pages }
+        { ":\penalty0 " * pages n.dashify * }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.vol.num.eid}
+{ volume field.or.null
+  number empty$
+    'skip$
+    { "\penalty0 (" number * ")" * *
+      volume empty$
+        { "there's a number but no volume in " cite$ * warning$ }
+        'skip$
+      if$
+    }
+  if$
+  eid empty$
+    'skip$
+    { duplicate$ empty$
+        { pop$ format.eid }
+        { ":\penalty0 " * eid * }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+    'format.pages
+    { type empty$
+        { "chapter" }
+        { type "l" change.case$ }
+      if$
+      chapter tie.or.space.connect
+      pages empty$
+        'skip$
+        { ", " * format.pages * }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.in.ed.booktitle}
+{ booktitle empty$
+    { "" }
+    { editor empty$
+        { "In " booktitle emphasize * }
+        { "In " format.editors * ", " * booktitle emphasize * }
+      if$
+    }
+  if$
+}
+
+FUNCTION {empty.misc.check}
+{ author empty$ title empty$ howpublished empty$
+  month empty$ year empty$ note empty$
+  and and and and and
+  key empty$ not and
+    { "all relevant fields are empty in " cite$ * warning$ }
+    'skip$
+  if$
+}
+
+FUNCTION {format.thesis.type}
+{ type empty$
+    'skip$
+    { pop$
+      type "t" change.case$
+    }
+  if$
+}
+
+FUNCTION {format.tr.number}
+{ type empty$
+    { "Technical Report" }
+    'type
+  if$
+  number empty$
+    { "t" change.case$ }
+    { number tie.or.space.connect }
+  if$
+}
+
+FUNCTION {format.article.crossref}
+{ key empty$
+    { journal empty$
+        { "need key or journal for " cite$ * " to crossref " * crossref *
+          warning$
+          ""
+        }
+        { "In \emph{" journal * "}" * }
+      if$
+    }
+    { "In " }
+  if$
+  " \citet{" * crossref * "}" *
+}
+
+FUNCTION {format.book.crossref}
+{ volume empty$
+    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+      "In "
+    }
+    { "Volume" volume tie.or.space.connect
+      " of " *
+    }
+  if$
+  editor empty$
+  editor field.or.null author field.or.null =
+  or
+    { key empty$
+        { series empty$
+            { "need editor, key, or series for " cite$ * " to crossref " *
+              crossref * warning$
+              "" *
+            }
+            { "\emph{" * series * "}" * }
+          if$
+        }
+        'skip$
+      if$
+    }
+    'skip$
+  if$
+  " \citet{" * crossref * "}" *
+}
+
+FUNCTION {format.incoll.inproc.crossref}
+{ editor empty$
+  editor field.or.null author field.or.null =
+  or
+    { key empty$
+        { booktitle empty$
+            { "need editor, key, or booktitle for " cite$ * " to crossref " *
+              crossref * warning$
+              ""
+            }
+            { "In \emph{" booktitle * "}" * }
+          if$
+        }
+        { "In " }
+      if$
+    }
+    { "In " }
+  if$
+  " \citet{" * crossref * "}" *
+}
+
+FUNCTION {article}
+{ output.bibitem
+  format.authors "author" output.check
+  author format.key output
+  new.block
+  format.title "title" output.check
+  new.block
+  crossref missing$
+    { journal emphasize "journal" output.check
+      eid empty$
+        { format.vol.num.pages output }
+        { format.vol.num.eid output }
+      if$
+      format.date "year" output.check
+    }
+    { format.article.crossref output.nonnull
+      eid empty$
+        { format.pages output }
+        { format.eid output }
+      if$
+    }
+  if$
+  format.issn output
+  format.doi output
+  format.url output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {book}
+{ output.bibitem
+  author empty$
+    { format.editors "author and editor" output.check
+      editor format.key output
+    }
+    { format.authors output.nonnull
+      crossref missing$
+        { "author and editor" editor either.or.check }
+        'skip$
+      if$
+    }
+  if$
+  new.block
+  format.btitle "title" output.check
+  crossref missing$
+    { format.bvolume output
+      new.block
+      format.number.series output
+      new.sentence
+      publisher "publisher" output.check
+      address output
+    }
+    { new.block
+      format.book.crossref output.nonnull
+    }
+  if$
+  format.edition output
+  format.date "year" output.check
+  format.isbn output
+  format.doi output
+  format.url output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {booklet}
+{ output.bibitem
+  format.authors output
+  author format.key output
+  new.block
+  format.title "title" output.check
+  howpublished address new.block.checkb
+  howpublished output
+  address output
+  format.date output
+  format.isbn output
+  format.doi output
+  format.url output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+  author empty$
+    { format.editors "author and editor" output.check
+      editor format.key output
+    }
+    { format.authors output.nonnull
+      crossref missing$
+        { "author and editor" editor either.or.check }
+        'skip$
+      if$
+    }
+  if$
+  new.block
+  format.btitle "title" output.check
+  crossref missing$
+    { format.bvolume output
+      format.chapter.pages "chapter and pages" output.check
+      new.block
+      format.number.series output
+      new.sentence
+      publisher "publisher" output.check
+      address output
+    }
+    { format.chapter.pages "chapter and pages" output.check
+      new.block
+      format.book.crossref output.nonnull
+    }
+  if$
+  format.edition output
+  format.date "year" output.check
+  format.isbn output
+  format.doi output
+  format.url output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+  format.authors "author" output.check
+  author format.key output
+  new.block
+  format.title "title" output.check
+  new.block
+  crossref missing$
+    { format.in.ed.booktitle "booktitle" output.check
+      format.bvolume output
+      format.number.series output
+      format.chapter.pages output
+      new.sentence
+      publisher "publisher" output.check
+      address output
+      format.edition output
+      format.date "year" output.check
+    }
+    { format.incoll.inproc.crossref output.nonnull
+      format.chapter.pages output
+    }
+  if$
+  format.isbn output
+  format.doi output
+  format.url output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {inproceedings}
+{ output.bibitem
+  format.authors "author" output.check
+  author format.key output
+  new.block
+  format.title "title" output.check
+  new.block
+  crossref missing$
+    { format.in.ed.booktitle "booktitle" output.check
+      format.bvolume output
+      format.number.series output
+      format.pages output
+      address empty$
+        { organization publisher new.sentence.checkb
+          organization output
+          publisher output
+          format.date "year" output.check
+        }
+        { address output.nonnull
+          format.date "year" output.check
+          new.sentence
+          organization output
+          publisher output
+        }
+      if$
+    }
+    { format.incoll.inproc.crossref output.nonnull
+      format.pages output
+    }
+  if$
+  format.isbn output
+  format.doi output
+  format.url output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {manual}
+{ output.bibitem
+  format.authors output
+  author format.key output
+  new.block
+  format.btitle "title" output.check
+  organization address new.block.checkb
+  organization output
+  address output
+  format.edition output
+  format.date output
+  format.url output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+  format.authors "author" output.check
+  author format.key output
+  new.block
+  format.title "title" output.check
+  new.block
+  "Master's thesis" format.thesis.type output.nonnull
+  school "school" output.check
+  address output
+  format.date "year" output.check
+  format.url output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {misc}
+{ output.bibitem
+  format.authors output
+  author format.key output
+  title howpublished new.block.checkb
+  format.title output
+  howpublished new.block.checka
+  howpublished output
+  format.date output
+  format.issn output
+  format.url output
+  new.block
+  note output
+  format.urldate output
+  fin.entry
+  empty.misc.check
+}
+
+FUNCTION {phdthesis}
+{ output.bibitem
+  format.authors "author" output.check
+  author format.key output
+  new.block
+  format.btitle "title" output.check
+  new.block
+  "PhD thesis" format.thesis.type output.nonnull
+  school "school" output.check
+  address output
+  format.date "year" output.check
+  format.url output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+  format.editors output
+  editor format.key output
+  new.block
+  format.btitle "title" output.check
+  format.bvolume output
+  format.number.series output
+  address output
+  format.date "year" output.check
+  new.sentence
+  organization output
+  publisher output
+  format.isbn output
+  format.doi output
+  format.url output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+  format.authors "author" output.check
+  author format.key output
+  new.block
+  format.title "title" output.check
+  new.block
+  format.tr.number output.nonnull
+  institution "institution" output.check
+  address output
+  format.date "year" output.check
+  format.url output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+  format.authors "author" output.check
+  author format.key output
+  new.block
+  format.title "title" output.check
+  new.block
+  note "note" output.check
+  format.date output
+  format.url output
+  fin.entry
+}
+
+FUNCTION {default.type} { misc }
+
+
+MACRO {jan} {"Jan."}
+
+MACRO {feb} {"Feb."}
+
+MACRO {mar} {"Mar."}
+
+MACRO {apr} {"Apr."}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"Aug."}
+
+MACRO {sep} {"Sept."}
+
+MACRO {oct} {"Oct."}
+
+MACRO {nov} {"Nov."}
+
+MACRO {dec} {"Dec."}
+
+
+
+MACRO {acmcs} {"ACM Comput. Surv."}
+
+MACRO {acta} {"Acta Inf."}
+
+MACRO {cacm} {"Commun. ACM"}
+
+MACRO {ibmjrd} {"IBM J. Res. Dev."}
+
+MACRO {ibmsj} {"IBM Syst.~J."}
+
+MACRO {ieeese} {"IEEE Trans. Softw. Eng."}
+
+MACRO {ieeetc} {"IEEE Trans. Comput."}
+
+MACRO {ieeetcad}
+ {"IEEE Trans. Comput.-Aided Design Integrated Circuits"}
+
+MACRO {ipl} {"Inf. Process. Lett."}
+
+MACRO {jacm} {"J.~ACM"}
+
+MACRO {jcss} {"J.~Comput. Syst. Sci."}
+
+MACRO {scp} {"Sci. Comput. Programming"}
+
+MACRO {sicomp} {"SIAM J. Comput."}
+
+MACRO {tocs} {"ACM Trans. Comput. Syst."}
+
+MACRO {tods} {"ACM Trans. Database Syst."}
+
+MACRO {tog} {"ACM Trans. Gr."}
+
+MACRO {toms} {"ACM Trans. Math. Softw."}
+
+MACRO {toois} {"ACM Trans. Office Inf. Syst."}
+
+MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."}
+
+MACRO {tcs} {"Theoretical Comput. Sci."}
+
+
+READ
+
+FUNCTION {sortify}
+{ purify$
+  "l" change.case$
+}
+
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+  'len :=
+  s #1 len substring$ =
+    { s len #1 + global.max$ substring$ }
+    's
+  if$
+}
+
+FUNCTION {format.lab.names}
+{ 's :=
+  s #1 "{vv~}{ll}" format.name$
+  s num.names$ duplicate$
+  #2 >
+    { pop$ " et~al." * }
+    { #2 <
+        'skip$
+        { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+            { " et~al." * }
+            { " and " * s #2 "{vv~}{ll}" format.name$ * }
+          if$
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+    { key empty$
+        { cite$ #1 #3 substring$ }
+        'key
+      if$
+    }
+    { author format.lab.names }
+  if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+    { editor empty$
+        { key empty$
+            { cite$ #1 #3 substring$ }
+            'key
+          if$
+        }
+        { editor format.lab.names }
+      if$
+    }
+    { author format.lab.names }
+  if$
+}
+
+FUNCTION {author.key.organization.label}
+{ author empty$
+    { key empty$
+        { organization empty$
+            { cite$ #1 #3 substring$ }
+            { "The " #4 organization chop.word #3 text.prefix$ }
+          if$
+        }
+        'key
+      if$
+    }
+    { author format.lab.names }
+  if$
+}
+
+FUNCTION {editor.key.organization.label}
+{ editor empty$
+    { key empty$
+        { organization empty$
+            { cite$ #1 #3 substring$ }
+            { "The " #4 organization chop.word #3 text.prefix$ }
+          if$
+        }
+        'key
+      if$
+    }
+    { editor format.lab.names }
+  if$
+}
+
+FUNCTION {calc.short.authors}
+{ type$ "book" =
+  type$ "inbook" =
+  or
+    'author.editor.key.label
+    { type$ "proceedings" =
+        'editor.key.organization.label
+        { type$ "manual" =
+            'author.key.organization.label
+            'author.key.label
+          if$
+        }
+      if$
+    }
+  if$
+  'short.list :=
+}
+
+FUNCTION {calc.label}
+{ calc.short.authors
+  short.list
+  "("
+  *
+  year duplicate$ empty$
+  short.list key field.or.null = or
+     { pop$ "" }
+     'skip$
+  if$
+  *
+  'label :=
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+  #1 'nameptr :=
+  ""
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
+    { namesleft #0 > }
+    {
+      s nameptr "{vv{ } }{ll{ }}{  f{ }}{  jj{ }}" format.name$ 't :=
+      nameptr #1 >
+        {
+          "   "  *
+          namesleft #1 = t "others" = and
+            { "zzzzz" * }
+            { numnames #2 > nameptr #2 = and
+                { "zz" * year field.or.null * "   " * }
+                'skip$
+              if$
+              t sortify *
+            }
+          if$
+        }
+        { t sortify * }
+      if$
+      nameptr #1 + 'nameptr :=
+      namesleft #1 - 'namesleft :=
+    }
+  while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+  "A " #2
+    "An " #3
+      "The " #4 t chop.word
+    chop.word
+  chop.word
+  sortify
+  #1 global.max$ substring$
+}
+
+FUNCTION {author.sort}
+{ author empty$
+    { key empty$
+        { "to sort, need author or key in " cite$ * warning$
+          ""
+        }
+        { key sortify }
+      if$
+    }
+    { author sort.format.names }
+  if$
+}
+
+FUNCTION {author.editor.sort}
+{ author empty$
+    { editor empty$
+        { key empty$
+            { "to sort, need author, editor, or key in " cite$ * warning$
+              ""
+            }
+            { key sortify }
+          if$
+        }
+        { editor sort.format.names }
+      if$
+    }
+    { author sort.format.names }
+  if$
+}
+
+FUNCTION {author.organization.sort}
+{ author empty$
+    { organization empty$
+        { key empty$
+            { "to sort, need author, organization, or key in " cite$ * warning$
+              ""
+            }
+            { key sortify }
+          if$
+        }
+        { "The " #4 organization chop.word sortify }
+      if$
+    }
+    { author sort.format.names }
+  if$
+}
+
+FUNCTION {editor.organization.sort}
+{ editor empty$
+    { organization empty$
+        { key empty$
+            { "to sort, need editor, organization, or key in " cite$ * warning$
+              ""
+            }
+            { key sortify }
+          if$
+        }
+        { "The " #4 organization chop.word sortify }
+      if$
+    }
+    { editor sort.format.names }
+  if$
+}
+
+
+FUNCTION {presort}
+{ calc.label
+  label sortify
+  "    "
+  *
+  type$ "book" =
+  type$ "inbook" =
+  or
+    'author.editor.sort
+    { type$ "proceedings" =
+        'editor.organization.sort
+        { type$ "manual" =
+            'author.organization.sort
+            'author.sort
+          if$
+        }
+      if$
+    }
+  if$
+  "    "
+  *
+  year field.or.null sortify
+  *
+  "    "
+  *
+  cite$
+  *
+  #1 entry.max$ substring$
+  'sort.label :=
+  sort.label *
+  #1 entry.max$ substring$
+  'sort.key$ :=
+}
+
+ITERATE {presort}
+
+SORT
+
+STRINGS { longest.label last.label next.extra }
+
+INTEGERS { longest.label.width last.extra.num number.label }
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+  #0 int.to.chr$ 'last.label :=
+  "" 'next.extra :=
+  #0 'longest.label.width :=
+  #0 'last.extra.num :=
+  #0 'number.label :=
+}
+
+FUNCTION {forward.pass}
+{ last.label label =
+    { last.extra.num #1 + 'last.extra.num :=
+      last.extra.num int.to.chr$ 'extra.label :=
+    }
+    { "a" chr.to.int$ 'last.extra.num :=
+      "" 'extra.label :=
+      label 'last.label :=
+    }
+  if$
+  number.label #1 + 'number.label :=
+}
+
+FUNCTION {reverse.pass}
+{ next.extra "b" =
+    { "a" 'extra.label := }
+    'skip$
+  if$
+  extra.label 'next.extra :=
+  extra.label
+  duplicate$ empty$
+    'skip$
+    { "{\natexlab{" swap$ * "}}" * }
+  if$
+  'extra.label :=
+  label extra.label * 'label :=
+}
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {forward.pass}
+
+REVERSE {reverse.pass}
+
+FUNCTION {bib.sort.order}
+{ sort.label  'sort.key$ :=
+}
+
+ITERATE {bib.sort.order}
+
+SORT
+
+FUNCTION {begin.bib}
+{   preamble$ empty$
+    'skip$
+    { preamble$ write$ newline$ }
+  if$
+  "\begin{thebibliography}{" number.label int.to.str$ * "}" *
+  write$ newline$
+  "\providecommand{\natexlab}[1]{#1}"
+  write$ newline$
+  "\providecommand{\url}[1]{\texttt{#1}}"
+  write$ newline$
+  "\expandafter\ifx\csname urlstyle\endcsname\relax"
+  write$ newline$
+  "  \providecommand{\doi}[1]{doi: #1}\else"
+  write$ newline$
+  "  \providecommand{\doi}{doi: \begingroup \urlstyle{rm}\Url}\fi"
+  write$ newline$
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION {end.bib}
+{ newline$
+  "\end{thebibliography}" write$ newline$
+}
+
+EXECUTE {end.bib}
index f1b6447..97d1220 100644 (file)
@@ -3,7 +3,7 @@
 \def\bibfont{\footnotesize}
 %\setcitestyle{numbers}
 %\bibliographystyle{alpha}
-\bibliographystyle{abbrvnat}
+\bibliographystyle{myabbrvnat}
 \usepackage{ragged2e}
 \apptocmd{\thebibliography}{\RaggedRight}{}{}
 
index 66ea5c5..c581ed2 100644 (file)
@@ -1,12 +1,8 @@
 \usepackage[nolangwarn,nonumberlist,prefix]{glossaries-extra}
 \setabbreviationstyle{long-short}
 \setabbreviationstyle[noexpand]{short-nolong}
-%\setabbreviationstyle[scabbr]{short-sc-nolong}
+\setabbreviationstyle[acronym]{long-short}
 \Addlcwords{of}
-\glssetcategoryattribute{abbreviation}{glossname}{uc}
-\glssetcategoryattribute{noexpand}{glossname}{uc}
-\glssetcategoryattribute{scabbr}{glossname}{uc}
-\GlsXtrEnableInitialTagging{acronym,abbreviation}{\itag}
 
 \newcommand*{\glsxtrpostnameacronym}{%
        \space\rm\glsentrylong{\glscurrententrylabel}%
 \makeglossaries%
 
 % Acronyms
-\newacronym[description={a open data interchange format using human readable text}]{JSON}{JSON}{(JavaScript object notation)}
-\newacronym[description={a publish-subscribe network protocol designed for resource constrained devices}]{MQTT}{MQTT}{(MQ telemetry transport)}
-\newacronym[description={a pure lazy \glsxtrlong{FP} language based on graph rewriting}]{CLEAN}{Clean}{(Clean language of East-Anglia and Nijmegen)}
-\newacronym[description={a simple serial communication protocol often used to connect sensors to microcontrollers}]{I2C}{\IIC{}}{(inter-integrated circuit)}
-\newacronym[description={passive infrared}]{PIR}{PIR}{}
-\newacronym[description={task-oriented programming}]{TOP}{TOP}{}
-\newacronym[description={the three ``CO'' (composability, comprehensibility, correctness) of working software}]{3COWS}{3COWS}{}
+\newacronym[description={a open data interchange format using human readable text},category=noexpand]{JSON}{JSON}{(JavaScript object notation)}
+\newacronym[description={a publish-subscribe network protocol designed for resource constrained devices},category=noexpand]{MQTT}{MQTT}{(MQ telemetry transport)}
+\newacronym[description={a pure lazy \glsxtrlong{FP} language based on graph rewriting},category=noexpand]{CLEAN}{Clean}{(Clean language of East-Anglia and Nijmegen)}
+\newacronym[description={a simple serial communication protocol often used to connect sensors to microcontrollers},category=noexpand]{I2C}{\IIC{}}{(inter-integrated circuit)}
+\newacronym[description={}]{PIR}{PIR}{passive infrared}
+\newacronym[description={}]{TOP}{TOP}{task-oriented programming}
+\newacronym[description={the three ``CO'' (composability, comprehensibility, correctness) of working software},category=noexpand]{3COWS}{3COWS}{}
 
 % Initialisms
 \newabbreviation{ADC}{ADC}{analog-to-digital converter}
@@ -76,7 +72,7 @@
 \newabbreviation[category=noexpand,prefixfirst={a\ },prefix={an\ }]{LED}{LED}{light-emitting diode}
 \newabbreviation[category=noexpand]{OLED}{OLED}{organic \glsxtrshort{LED}}
 \newabbreviation[category=noexpand]{OS}{OS}{operating system}
-\newabbreviation{PFRP}{p-frp}{priority-based \glsxtrshort{FRP}}
+\newabbreviation{PFRP}{P-FRP}{priority-based \glsxtrshort{FRP}}
 \newabbreviation{PRS}{PRS}{\gls{PYTHON} Raspberry Pi system}
 \newabbreviation{PWS}{PWS}{\gls{MICROPYTHON} \gls{WEMOS} system}
 \newabbreviation{PRTS}{PRTS}{\gls{PYTHON} Raspberry Pi temperature sensor}
index d2702aa..48067f1 100755 (executable)
@@ -6,8 +6,8 @@ then
 fi
 sed -i \
        -e '/url = {https\?:\/\/\(doi.org\|link\.springer\|ieeexplore\|dl\.acm\|services\.igi-global\|arxiv\.org\|www.sciencedirect.com\)/d'\
-       -e 's/Association for Computing Machinery,/ACM,/g'\
        -e 's/{Transforma Insights}/{&}/g'\
+       -e 's/{TOP Software}/{&}/g'\
        -e 's/{GHC Team}/{&}/g'\
        -e 's/λ/$\\lambda$/g'\
        "${@}"