Demo Data from EDBT 2026 / reviewers in the wild / expert
Andres Löh
dblp:46/2165
· DBLP profile ↗
23ranked-venue papers
3as first author
1since 2021 · last 2022
0000-0002-7492-7293ORCID · corroborated
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 17 · 2 first-author · 1 since 2021Theory of computation · 7 · 2 first-author
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
1 paper |
Programming languages and type systems · 100% |
Topics — the 2 heaviest of 2, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Programming languages and type systems › metaprogramming
multi-stage programming |
0.6 | 1 | 2022 | Staging with class: a specification for typed template Haskell · Proc. ACM Program. Lang. 2022 |
Programming languages and type systems › type systems › polymorphism
type classes |
0.6 | 1 | 2022 | Staging with class: a specification for typed template Haskell · Proc. ACM Program. Lang. 2022 |
Methods — techniques the papers use, named apart from their topics
type soundness proof · 0.6beta-eta rules · 0.6
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2022 | Staging with class: a specification for typed template HaskellabstractMulti-stage programming using typed code quotation is an established technique for writing optimizing code generators with strong type-safety guarantees. Unfortunately, quotation in Haskell interacts poorly with type classes, making it difficult to write robust multi-stage programs. We study this unsound interaction and propose a resolution, staged type class constraints, which we formalize in a source calculus λ ⇒ that elaborates into an explicit core calculus F . We show type soundness of both calculi, establishing that well-typed, well-staged source programs always elaborate to well-typed, well-staged core programs, and prove beta and eta rules for code quotations. Our design allows programmers to incorporate type classes into multi-stage programs with confidence. Although motivated by Haskell, it is also suitable as a foundation for other languages that support both overloading and quotation. Ningning Xie, Matthew Pickering, Andres Löh, Nicolas Wu, Jeremy Yallop, Meng Wang 0002 |
Proc. ACM Program. Lang. | 3 |
| 2015 | Hierarchy in Generic Programming Libraries
José Pedro Magalhães, Andres Löh |
MPC | 2 |
| 2015 | Type-changing rewriting and semantics-preserving transformation
Sean Leather, Johan Jeuring, Andres Löh, Bram Schuur |
Sci. Comput. Program. | 3 |
| 2014 | Generic Generic Programming
José Pedro Magalhães, Andres Löh |
PADL | 2 |
| 2014 | Type-changing rewriting and semantics-preserving transformationabstractWe have identified a class of regular, whole-program transformations that cannot be safely performed with typical transformation techniques because transformation requires changing the types of terms. In these transformations, we want to change typically large parts of a program from using one type to using another type while simultaneously preserving the original program semantics after transformation. Sean Leather, Johan Jeuring, Andres Löh, Bram Schuur |
PEPM | 3 |
| 2013 | Abstract syntax graphs for domain specific languagesabstractThis paper presents a representation for embedded domain specific languages (EDSLs) using abstract syntax graphs (ASGs). The purpose of this representation is to deal with the important problem of defining operations that require observing or preserving sharing and recursion in EDSLs in an expressive, yet easy-to-use way. In contrast to more conventional representations based on abstract syntax trees, ASGs represent sharing and recursion explicitly as binder constructs. We use a functional representation of ASGs based on structured graphs, where binders are encoded with parametric higher-order abstract syntax. We show how adapt to this representation to well-typed ASGs. This is especially useful for EDSLs, which often reuse the type system of the host language. We also show an alternative class-based encoding of(well-typed) ASGs that enables extensible and modular well-typed EDSLs while allowing the manipulation of sharing and recursion. Bruno C. d. S. Oliveira, Andres Löh |
PEPM | 2 |
| 2010 | A generic deriving mechanism for HaskellabstractHaskell's deriving mechanism supports the automatic generation of instances for a number of functions. The Haskell 98 Report only specifies how to generate instances for the Eq, Ord, Enum, Bounded, Show, and Read classes. The description of how to generate instances is largely informal. The generation of instances imposes restrictions on the shape of datatypes, depending on the particular class to derive. As a consequence, the portability of instances across different compilers is not guaranteed. José Pedro Magalhães, Atze Dijkstra, Johan Jeuring, Andres Löh |
Haskell | 4 |
| 2010 | Dependently Typed Grammars
Kasper Brink, Stefan Holdermans, Andres Löh |
MPC | 3 |
| 2010 | Optimizing generics is easy!abstractDatatype-generic programming increases program reliability by reducing code duplication and enhancing reusability and modularity. Several generic programming libraries for Haskell have been developed in the past few years. These libraries have been compared in detail with respect to expressiveness, extensibility, typing issues, etc., but performance comparisons have been brief, limited, and preliminary. It is widely believed that generic programs run slower than hand-written code. In this paper we present an extensive benchmark suite for generic functions and analyze the potential for automatic code optimization at compilation time. Our benchmark confirms that generic programs, when compiled with the standard optimization flags of the Glasgow Haskell Compiler (GHC), are substantially slower than their hand-written counterparts. However, we also find that more advanced optimization capabilities of GHC can be used to further optimize generic functions, sometimes achieving the same efficiency as hand-written code. José Pedro Magalhães, Stefan Holdermans, Johan Jeuring, Andres Löh |
PEPM | 4 |
| 2010 | A Tutorial Implementation of a Dependently Typed Lambda CalculusabstractWe present the type rules for a dependently typed core calculus together with a straight-forward implementation in Haskell. We explicitly highlight the changes necessary to shift from a simply-typed lambda calculus to the dependently typed lambda calculus. We also describe how to extend our core language with data types and write several small example programs. The article is accompanied by an executable interpreter and example code that allows immediate experimentation with the system we describe. Andres Löh, Conor McBride, Wouter Swierstra |
Fundam. Informaticae | 1 |
| 2010 | NixOS: A purely functional Linux distributionabstractAbstract Existing package and system configuration management tools suffer from an imperative model , where system administration actions such as package upgrades or changes to system configuration files are stateful: they destructively update the state of the system. This leads to many problems, such as the inability to roll back changes easily, to deploy multiple versions of a package side-by-side, to reproduce a configuration deterministically on another machine, or to reliably upgrade a system. In this paper we show that we can overcome these problems by moving to a purely functional system configuration model . This means that all static parts of a system (such as software packages, configuration files and system startup scripts) are built by pure functions and are immutable, stored in a way analogous to a heap in a purely functional language. We have implemented this model in NixOS , a non-trivial Linux distribution that uses the Nix package manager to build the entire system configuration from a modular, purely functional specification. Eelco Dolstra, Andres Löh, Nicolas Pierron |
J. Funct. Program. | 2 |
| 2009 | Generic programming with fixed points for mutually recursive datatypesabstractMany datatype-generic functions need access to the recursive positions in the structure of the datatype, and therefore adopt a fixed point view on datatypes. Examples include variants of fold that traverse the data following the recursive structure, or the Zipper data structure that enables navigation along the recursive positions. However, Hindley-Milner-inspired type systems with algebraic datatypes make it difficult to express fixed points for anything but regular datatypes. Many real-life examples such as abstract syntax trees are in fact systems of mutually recursive datatypes and therefore excluded. Using Haskell's GADTs and type families, we describe a technique that allows a fixed-point view for systems of mutually recursive datatypes. We demonstrate that our approach is widely applicable by giving several examples of generic functions for this view, most prominently the Zipper. Alexey Rodriguez Yakushev, Stefan Holdermans, Andres Löh, Johan Jeuring |
ICFP | 3 |
| 2009 | Generic programming in 3D
Ralf Hinze, Andres Löh |
Sci. Comput. Program. | 2 |
| 2008 | Report on the tenth ICFP programming contestabstractThe ICFP programming contest is a 72-hour contest, which attracts thousands of contestants from all over the world. In this report we describe what it takes to organise this contest, the main ideas behind the contest we organised, the task, how to solve it, how we created it, and how well the contestants did. Eelco Dolstra, Jurriaan Hage, Bastiaan Heeren, Stefan Holdermans, Johan Jeuring, Andres Löh, Clara Löh, Arie Middelkoop, Alexey Rodriguez Yakushev, John van Schie |
ICFP | 6 |
| 2008 | NixOS: a purely functional Linux distributionabstractExisting package and system configuration management tools suffer from an imperative model, where system administration actions such as upgrading packages or changes to system configuration files are stateful: they destructively update the state of the system. This leads to many problems, such as the inability to roll back changes easily, to run multiple versions of a package side-by-side, to reproduce a configuration deterministically on another machine, or to reliably upgrade a system. In this paper we show that we can overcome these problems by moving to a purely functional system configuration model. This means that all static parts of a system (such as software packages, configuration files and system startup scripts) are built by pure functions and are immutable, stored in a way analogously to a heap in a purely function language. We have implemented this model in NixOS, a non-trivial Linux distribution that uses the Nix package manager to build the entire system configuration from a purely functional specification. Eelco Dolstra, Andres Löh |
ICFP | 2 |
| 2006 | "Scrap Your Boilerplate" Revolutions
Ralf Hinze, Andres Löh |
MPC | 2 |
| 2006 | Generic Views on Data Types
Stefan Holdermans, Johan Jeuring, Andres Löh, Alexey Rodriguez Yakushev |
MPC | 3 |
| 2006 | Open data types and open functionsabstractThe 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 Andres Löh, Ralf Hinze |
PPDP | 1 |
| 2005 | Qualified types for MLFabstractMLF is a type system that extends a functional language with impredicative rank-n polymorphism. Type inference remains possible and only in some clearly defined situations, a local type annotation is required. Qualified types are a general concept that can accommodate a wide range of type systems extension, for example, type classes in Haskell. We show how the theory of qualified types can be used seamlessly with the higher-ranked impredicative polymorphism of MLF, and give a solution to the non-trivial problem of evidence translation in the presence of impredicative datatypes. Daan Leijen, Andres Löh |
ICFP | 2 |
| 2004 | Parsing permutation phrasesabstractA permutation phrase is a sequence of elements (possibly of different types) in which each element occurs exactly once and the order is irrelevant. Some of the permutable elements may be optional. We show how to extend a parser combinator library with support for parsing such free-order constructs. A user of the library can easily write parsers for permutation phrases and does not need to care about checking and reordering the recognized elements. Applications include the generation of parsers for attributes of XML tags and Haskell's record syntax. Arthur I. Baars, Andres Löh, S. Doaitse Swierstra |
J. Funct. Program. | 2 |
| 2004 | Type-indexed data types
Ralf Hinze, Johan Jeuring, Andres Löh |
Sci. Comput. Program. | 3 |
| 2003 | Dependency-style generic HaskellabstractGeneric Haskell is an extension of Haskell that supports the construction of generic programs. During the development of several applications, such as an XML editor and compressor, we encountered a number of limitations with the existing (Classic) Generic Haskell language, as implemented by the current Generic Haskell compiler. Specifically, generic definitions become disproportionately more difficult to write as their complexity increases, such as when one generic function uses another, because recursion is implicit in generic definitions. In the current implementation, writing such functions suffers the burden of a large administrative overhead and is at times counter-intuitive. Furthermore, the absence of type checking in the current implementation can make Generic Haskell hard to use.In this paper we develop the foundations of Dependency-style Generic Haskell which addresses the above problems, shifting the burden from the programmer to the compiler. These foundations consist of a full type system for Dependency-style Generic Haskell's core language and appropriate reduction rules. The type system enables the programmer to write generic functions in a more natural style, taking care of dependency details which were previously the programmer's responsibility. Andres Löh, Dave Clarke 0001, Johan Jeuring |
ICFP | 1 |
| 2002 | Type-Indexed Data Types
Ralf Hinze, Johan Jeuring, Andres Löh |
MPC | 3 |