Dylan McDermott

dblp:203/8252 · DBLP profile ↗
← Back
12ranked-venue papers
9as first author
9since 2021 · last 2026
0000-0002-6705-1449ORCID · verified

Domains — the database's venue-derived domains; a paper can count in several

Theory of computation · 8 · 7 first-author · 7 since 2021Software engineering, systems software and programming languages · 6 · 4 first-author · 3 since 2021
YearPublicationVenuePosition
2026 Denotational reasoning for asynchronous multiparty session types
Dylan McDermott, Nobuko Yoshida
ESOP (2)1
2025 Grading Call-By-Push-Value, Explicitly and Implicitly
Dylan McDermott
FSCD1
2024 Galois connecting call-by-value and call-by-name
abstract
We establish a general framework for reasoning about the relationship between call-by-value and call-by-name. In languages with computational effects, call-by-value and call-by-name executions of programs often have different, but related, observable behaviours. For example, if a program might diverge but otherwise has no effects, then whenever it terminates under call-by-value, it terminates with the same result under call-by-name. We propose a technique for stating and proving properties like these. The key ingredient is Levy's call-by-push-value calculus, which we use as a framework for reasoning about evaluation orders. We show that the call-by-value and call-by-name translations of expressions into call-by-push-value have related observable behaviour under certain conditions on computational effects, which we identify. We then use this fact to construct maps between the call-by-value and call-by-name interpretations of types, and identify further properties of effects that imply these maps form a Galois connection. These properties hold for some computational effects (such as divergence), but not others (such as mutable state). This gives rise to a general reasoning principle that relates call-by-value and call-by-name. We apply the reasoning principle to example computational effects including divergence and nondeterminism.
Dylan McDermott, Alan Mycroft
Log. Methods Comput. Sci.1
2022 Sweedler Theory of Monads
abstract
Abstract Monad-comonad interaction laws are a mathematical concept for describing communication protocols between effectful computations and coeffectful environments in the paradigm where notions of effectful computation are modelled by monads and notions of coeffectful environment by comonads. We show that monad-comonad interaction laws are an instance of measuring maps from Sweedler theory for duoidal categories whereby the final interacting comonad for a monad and a residual monad arises as the Sweedler hom and the initial residual monad for a monad and an interacting comonad as the Sweedler copower. We then combine this with a (co)algebraic characterization of monad-comonad interaction laws to derive descriptions of the Sweedler hom and the Sweedler copower in terms of their coalgebras resp. algebras.
Dylan McDermott, Exequiel Rivas, Tarmo Uustalu
FoSSaCS1
2022 Galois Connecting Call-by-Value and Call-by-Name
abstract
We establish a general framework for reasoning about the relationship between call-by-value and call-by-name. In languages with side-effects, call-by-value and call-by-name executions of programs often have different, but related, observable behaviours. For example, if a program might diverge but otherwise has no side-effects, then whenever it terminates under call-by-value, it terminates with the same result under call-by-name. We propose a technique for stating and proving these properties. The key ingredient is Levy’s call-by-push-value calculus, which we use as a framework for reasoning about evaluation orders. We construct maps between the call-by-value and call-by-name interpretations of types. We then identify properties of side-effects that imply these maps form a Galois connection. These properties hold for some side-effects (such as divergence), but not others (such as mutable state). This gives rise to a general reasoning principle that relates call-by-value and call-by-name. We apply the reasoning principle to example side-effects including divergence and nondeterminism.
Dylan McDermott, Alan Mycroft
FSCD1
2022 A Type System with Subtyping for WebAssembly's Stack Polymorphism
Dylan McDermott, Yasuaki Morita, Tarmo Uustalu
ICTAC1
2022 Flexibly Graded Monads and Graded Algebras
Dylan McDermott, Tarmo Uustalu
MPC1
2022 Flexible presentations of graded monads
abstract
A large class of monads used to model computational effects have natural presentations by operations and equations, for example, the list monad can be presented by a constant and a binary operation subject to unitality and associativity. Graded monads are a generalization of monads that enable us to track quantitative information about the effects being modelled. Correspondingly, a large class of graded monads can be presented using an existing notion of graded presentation. However, the existing notion has some deficiencies, in particular many effects do not have natural graded presentations. We introduce a notion of flexibly graded presentation that does not suffer from these issues, and develop the associated theory. We show that every flexibly graded presentation induces a graded monad equipped with interpretations of the operations of the presentation, and that all graded monads satisfying a particular condition on colimits have a flexibly graded presentation. As part of this, we show that the usual algebra-preserving correspondence between presentations and a class of monads transfers to an algebra-preserving correspondence between flexibly graded presentations and a class of flexibly graded monads.
Shin-ya Katsumata, Dylan McDermott, Tarmo Uustalu, Nicolas Wu
Proc. ACM Program. Lang.2
2021 Abstract Clones for Abstract Syntax
abstract
The purpose of this work is to complete the algebraic foundations of second-order languages from the viewpoint of categorical algebra as developed by Lawvere. To this end, this paper introduces the notion of second-order algebraic theory and develops its basic theory. A crucial role in the definition is played by the second-order theory of equality $\M$, representing the most elementary operators and equations present in every second-order language. The category $\M$ can be described abstractly via the universal property of being the free cartesian category on an exponentiable object. Thereby, in the tradition of categorical algebra, a second-order algebraic theory consists of a cartesian category $\Mlaw$ and a strict cartesian identity-on-objects functor $\M \to \Mlaw$ that preserves the universal exponentiable object of $\Mlaw$. Lawvere's functorial semantics for algebraic theories can then be generalised to the second-order setting. To verify the correctness of our theory, two categorical equivalences are established: at the syntactic level, that of second-order equational presentations and second-order algebraic theories; at the semantic level, that of second-order algebras and second-order functorial models.
Nathanael Arkor, Dylan McDermott
FSCD2
2020 Degrading Lists
abstract
We discuss the relationship between monads and their known generalisation, graded monads, which are especially useful for modelling computational effects equipped with a form of sequential composition. Specifically, we ask if a graded monad can be extended to a monad, and when such a degrading is in some sense canonical. Our particular examples are the graded monads of lists and non-empty lists indexed by their lengths, which gives us a pretext to study the space of all (non-graded) monad structures on the list and non-empty list endofunctors. We show that, in both cases, there exist infinitely many monad structures. However, while there are at least two ways to complete the graded monad structure on length-indexed lists to a monad structure on the list endofunctor, such a completion for non-empty lists is unique.
Dylan McDermott, Maciej Piróg, Tarmo Uustalu
PPDP1
2019 Extended Call-by-Push-Value: Reasoning About Effectful Programs and Evaluation Order
abstract
Traditionally, reasoning about programs under varying evaluation regimes (call-by-value, call-by-name etc.) was done at the meta-level, treating them as term rewriting systems. Levy’s call-by-push-value (CBPV) calculus provides a more powerful approach for reasoning, by treating CBPV terms as a common intermediate language which captures both call-by-value and call-by-name, and by allowing equational reasoning about changes to evaluation order between or within programs. We extend CBPV to additionally deal with call-by-need, which is non-trivial because of shared reductions. This allows the equational reasoning to also support call-by-need. As an example, we then prove that call-by-need and call-by-name are equivalent if nontermination is the only side-effect in the source language. We then show how to incorporate an effect system. This enables us to exploit static knowledge of the potential effects of a given expression to augment equational reasoning; thus a program fragment might be invariant under change of evaluation regime only because of knowledge of its effects.
Dylan McDermott, Alan Mycroft
ESOP1
2017 Project snowflake: non-blocking safe manual memory management in .NET
abstract
Garbage collection greatly improves programmer productivity and ensures memory safety. Manual memory management on the other hand often delivers better performance but is typically unsafe and can lead to system crashes or security vulnerabilities. We propose integrating safe manual memory management with garbage collection in the .NET runtime to get the best of both worlds. In our design, programmers can choose between allocating objects in the garbage collected heap or the manual heap. All existing applications run unmodified, and without any performance degradation, using the garbage collected heap. Our programming model for manual memory management is flexible: although objects in the manual heap can have a single owning pointer, we allow deallocation at any program point and concurrent sharing of these objects amongst all the threads in the program. Experimental results from our .NET CoreCLR implementation on real-world applications show substantial performance gains especially in multithreaded scenarios: up to 3x savings in peak working sets and 2x improvements in runtime.
Matthew J. Parkinson, Dimitrios Vytiniotis, Kapil Vaswani, Manuel Costa, Pantazis Deligiannis, Dylan McDermott, Aaron Blankstein, Jonathan Balkind
Proc. ACM Program. Lang.6