Edsko de Vries

dblp:16/4988 · DBLP profile ↗
← Back
9ranked-venue papers
5as first author
3since 2021 · last 2025
0000-0003-3979-3397ORCID · corroborated

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

Software engineering, systems software and programming languages · 7 · 3 first-author · 3 since 2021Theory of computation · 2 · 2 first-author
YearPublicationVenuePosition
2025 Automatic C Bindings Generation for Haskell
abstract
Interfacing Haskell with C libraries is a common necessity, but the manual creation of bindings is both error-prone and laborious. We present hs-bindgen, a new tool that provides fully automatic generation of Haskell FFI bindings directly from C header files.
Travis Cardwell, Sam Derbyshire, Edsko de Vries, Dominik Schrempf
Haskell3
2023 falsify: Internal Shrinking Reimagined for Haskell
abstract
In unit testing we apply the function under test to known inputs and check for known outputs. By contrast, in property based testing we state properties relating inputs and outputs, apply the function to random inputs, and verify that the property holds; if not, we found a bug. Randomly generated inputs tend to be large and should therefore be minimised. Traditionally this is done with an explicitly provided shrinker, but in this paper we propose a way to write generators that obsoletes the need to write a separate shrinker. Inspired by the Python library Hypothesis, the approach can work even across monadic bind. Compared to Hypothesis, our approach is more suitable to the Haskell setting: it depends on a minimal set of core principles, and handles generation and shrinking of infinite data structures, including functions.
Edsko de Vries
Haskell1
2022 Searching entangled program spaces
abstract
Many problem domains, including program synthesis and rewrite-based optimization, require searching astronomically large spaces of programs. Existing approaches often rely on building specialized data structures—version-space algebras, finite tree automata, or e-graphs—to compactly represent such spaces. At their core, all these data structures exploit independence of subterms; as a result, they cannot efficiently represent more complex program spaces, where the choices of subterms are entangled. We introduce equality-constrained tree automata (ECTAs), a new data structure, designed to compactly represent large spaces of programs with entangled subterms. We present efficient algorithms for extracting programs from ECTAs, implemented in a performant Haskell library, ecta. Using the ecta library, we construct Hectare, a type-driven program synthesizer for Haskell. Hectare significantly outperforms a state-of-the-art synthesizer Hoogle+—providing an average speedup of 8×—despite its implementation being an order of magnitude smaller.
James Koppel, Zheng Guo 0003, Edsko de Vries, Armando Solar-Lezama, Nadia Polikarpova
Proc. ACM Program. Lang.3
2014 Uniqueness typing for resource management in message-passing concurrency
abstract
We view channels as the main form of resources in a message-passing programming paradigm. These channels need to be carefully managed in settings where resources are scarce. To study this problem, we extend the pi-calculus with primitives for channel allocation and deallocation and allow channels to be reused to communicate values of different types. Inevitably, the added expressiveness increases the possibilities for runtime errors. We define a substructural type system, which combines uniqueness typing and affine typing to reject these ill-behaved programs.
Edsko de Vries, Adrian Francalanza, Matthew Hennessy
J. Log. Comput.1
2012 A practical solution for achieving language compatibility in scripting language compilers
Paul Biggar, Edsko de Vries, David Gregg
Sci. Comput. Program.2
2011 Reverse Hoare Logic
Edsko de Vries, Vasileios Koutavas
SEFM1
2010 Liveness of Communicating Transactions (Extended Abstract)
Edsko de Vries, Vasileios Koutavas, Matthew Hennessy
APLAS1
2010 Communicating Transactions - (Extended Abstract)
Edsko de Vries, Vasileios Koutavas, Matthew Hennessy
CONCUR1
2010 Formal polytypic programs and proofs
abstract
Abstract The aim of our work is to be able to do fully formal, machine-verified proofs over Generic Haskell-style polytypic programs. In order to achieve this goal, we embed polytypic programming in the proof assistant Coq and provide an infrastructure for polytypic proofs. Polytypic functions are reified within Coq as a datatype and they can then be specialized by applying a dependently typed term specialization function. Polytypic functions are thus first-class citizens and can be passed as arguments or returned as results. Likewise, we reify polytypic proofs as a datatype and provide a lemma that a polytypic proof can be specialized to any datatype in the universe. The correspondence between polytypic functions and their polytypic proofs is very clear: programmers need to give proofs for, and only for, the same cases that they need to give instances for when they define the polytypic function itself. Finally, we discuss how to write (co)recursive functions and do (co)recursive proofs in a similar way that recursion is handled in Generic Haskell.
Wendy Verbruggen, Edsko de Vries, Arthur Hughes
J. Funct. Program.2