EDBT 2026 Demo / reviewers in the wild / expert
Alexis King
dblp:255/7630
· DBLP profile ↗
2ranked-venue papers
0as first author
0since 2021 · last 2020
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 2
Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.
| Software engineering, system software, and programming languages
2 papers |
Programming languages and type systems · 76% Debugging and program repair · 15% Compilers and program optimization · 4% |
Topics — the 6 heaviest of 8, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Programming languages and type systems › type systems › gradual typing
blame assignment |
0.4 | 1 | 2020 | Does blame shifting work? · Proc. ACM Program. Lang. 2020 |
Debugging and program repair › fault localization
bug localization |
0.4 | 1 | 2020 | Does blame shifting work? · Proc. ACM Program. Lang. 2020 |
Programming languages and type systems
domain-specific languages |
0.4 | 1 | 2020 | Macros for domain-specific languages · Proc. ACM Program. Lang. 2020 |
Programming languages and type systems
language design |
0.4 | 1 | 2020 | Macros for domain-specific languages · Proc. ACM Program. Lang. 2020 |
Programming languages and type systems › metaprogramming
macros |
0.4 | 1 | 2020 | Macros for domain-specific languages · Proc. ACM Program. Lang. 2020 |
Programming languages and type systems › metaprogramming
macro expansion |
0.4 | 1 | 2020 | Macros for domain-specific languages · Proc. ACM Program. Lang. 2020 |
Methods — techniques the papers use, named apart from their topics
hygienic macro expansion · 0.4empirical methodology · 0.4
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2020 | Macros for domain-specific languagesabstractMacros provide a powerful means of extending languages. They have proven useful in both general-purpose and domain-specific programming contexts. This paper presents an architecture for implementing macro-extensible DSLs on top of macro-extensible host languages. The macro expanders of these DSLs inherit the syntax system, hygienic expansion, and more from the host. They transform the extensible DSL syntax into a DSL core language. This arrangement has several important consequences. It becomes straightforward to integrate the syntax of various DSLs and the host language when their expanders share these inherited components. Also, a DSL compiler may be designed around a fixed core language, even for an extensible DSL. Finally, macros empower programmers to safely grow DSLs on their own and tailor them to their needs. Michael Ballantyne, Alexis King, Matthias Felleisen |
Proc. ACM Program. Lang. | 2 |
| 2020 | Does blame shifting work?abstractContract systems, especially of the higher-order flavor, go hand in hand with blame. The pragmatic purpose of blame is to narrow down the code that a programmer needs to examine to locate the bug when the contract system discovers a contract violation. Or so the literature on higher-order contracts claims. In reality, however, there is neither empirical nor theoretical evidence that connects blame with the location of bugs. The reputation of blame as a tool for weeding out bugs rests on anecdotes about how programmers use contracts to shift blame and their attention from one part of a program to another until they discover the source of the problem. This paper aims to fill the apparent gap and shed light to the relation between blame and bugs. To that end, we introduce an empirical methodology for investigating whether, for a given contract system, it is possible to translate blame information to the location of bugs in a systematic manner. Our methodology is inspired by how programmers attempt to increase the precision of the contracts of a blamed component in order to shift blame to another component, which becomes the next candidate for containing the bug. In particular, we construct a framework that enables us to ask for a contract system whether (i) the process of blame shifting causes blame to eventually settle to the component that contains the bug; and (ii) every shift moves blame ``closer'' to the faulty component. Our methodology offers a rigorous means for evaluating the pragmatics of contract systems, and we employ it to analyze Racket's contract system. Along the way, we uncover subtle points about the pragmatic meaning of contracts and blame in Racket: (i) the expressiveness of Racket's off-the-shelf contract language is not sufficient to narrow down the blamed portion of the code to the faulty component in all cases; and (ii) contracts that trigger state changes (even unexpectedly, perhaps in the runtime system's data structures or caches) interfere with program evaluation in subtle ways and thus blame shifting can lead programmers on a detour when searching for a bug. These points highlight how evaluations such as ours suggest fixes to language design. Lukas Lazarek, Alexis King, Samanvitha Sundar, Robert Bruce Findler, Christos Dimoulas |
Proc. ACM Program. Lang. | 2 |