VLDB 2026 Research / reviewers in the wild / expert
Lennart Augustsson
dblp:a/LennartAugustsson
· DBLP profile ↗
12ranked-venue papers
10as first author
2since 2021 · last 2024
0009-0008-6894-4020ORCID · verified
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 11 · 9 first-author · 2 since 2021Applied, interdisciplinary, general and emerging computing · 1 · 1 first-author
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2024 | MicroHs: A Small Compiler for HaskellabstractMicroHs is a compiler for Haskell2010. It translates Haskell to SKI style combinators via λ-calculus. The runtime system is quite small with few dependencies. Lennart Augustsson |
Haskell | 1 |
| 2023 | The Verse Calculus: A Core Calculus for Deterministic Functional Logic ProgrammingabstractFunctional logic languages have a rich literature, but it is tricky to give them a satisfying semantics. In this paper we describe the Verse calculus, VC, a new core calculus for deterministic functional logic programming. Our main contribution is to equip VC with a small-step rewrite semantics, so that we can reason about a VC program in the same way as one does with lambda calculus; that is, by applying successive rewrites to it. We also show that the rewrite system is confluent for well-behaved terms. Lennart Augustsson, Joachim Breitner, Koen Claessen, Ranjit Jhala, Simon L. Peyton Jones, Olin Shivers, Guy L. Steele Jr., Tim Sweeney |
Proc. ACM Program. Lang. | 1 |
| 2016 | Experience report: types for a relational algebra libraryabstractAs part of our software toolkit at a major financial institution we have a library for relational algebra. This library is written in C++ and the type checking of the operations on the relations is very dynamic; all relations have the same static type. Of course, relational algebra operations have stringent type constraints, and since we believe in static typing, we would prefer these to be checked at compile time. Lennart Augustsson, Mårten Ågren |
Haskell | 1 |
| 2014 | Special Issue on Run-Time Systems and Target Platforms for Functional Languages: EditorialabstractCompiling functional languages to the existing variety of platforms calls for sophisticated implementations of run-time systems. This special issue focuses on this often-neglected aspect. We volunteered to compile this special issue in 2012 and immediately started soliciting papers. The original call for papers covered native-code platforms as well as run-time systems originally designed for non-functional languages such as the Java Virtual Machine or the .NET Common Language Runtime. Michael Sperber, Lennart Augustsson |
J. Funct. Program. | 2 |
| 2010 | O, partial evaluator, where art thou?abstractPartial evaluation is now a quite old idea, and it has been implemented many times. Partial evaluation is also very widely applicable; almost every problem in computing could use it. But widely used partial evaluators are nowhere to be seen. Why is that? In this talk I will give some examples of where I have used partial evaluation during 15 years of using Haskell commercially. I will give my wish list for a partial evaluator I could actually use (instead of rewriting it over and over), and also contrast this with what is done in the research community. Lennart Augustsson |
PEPM | 1 |
| 2008 | Paradise: a two-stage DSL embedded in HaskellabstractWe have implemented a two-stage language, Paradise, for building reusable components which are used to price financial products. Paradise is embedded in Haskell and makes heavy use of type-class based overloading, allowing the second stage to be compiled into a variety of backend platforms. Lennart Augustsson, Howard Mansell, Ganesh Sittampalam |
ICFP | 1 |
| 1998 | Cayenne - a Language with Dependent TypesabstractCayenne is a Haskell-like language. The main difference between Haskell and Cayenne is that Cayenne has dependent types, i.e., the result type of a function may depend on the argument value, and types of record components (which can be types or values) may depend on other components. Cayenne also combines the syntactic categories for value expressions and type expressions; thus reducing the number of language concepts.Having dependent types and combined type and value expressions makes the language very powerful. It is powerful enough that a special module concept is unnecessary; ordinary records suffice. It is also powerful enough to encode predicate logic at the type level, allowing types to be used as specifications of programs. However, this power comes at a cost: type checking of Cayenne is undecidable. While this may appear to be a steep price to pay, it seems to work well in practice. Lennart Augustsson |
ICFP | 1 |
| 1997 | Partial Evaluation in Aircraft Crew PlanningabstractIn this paper we investigate how partial evaluation and program transformations can be used on a real problem, namely that of speeding up airline crew scheduling.Scheduling of crews is subject to many rules and restrictions. These restrictions are expressed in a rule language. However, in a given planning situation much is known to be fixed, so the rule set can be partially evaluated with respect to this known input.The approach is somewhat novel in that it uses truly static input data as well as static input data where the values are known only to belong to a set of values.The results of the partial evaluation is quite satisfactory: both compilation and running times have decreased by using it. The partial evaluator is now part of the crew scheduling system that Carmen Systems AB markets and which is in use at most of the major European airlines and in daily production. Lennart Augustsson |
PEPM | 1 |
| 1996 | Benchmarking Implementations of Functional Languages with 'Pseudoknot', a Float-Intensive BenchmarkabstractAbstract Over 25 implementations of different functional languages are benchmarked using the same program, a floating-point intensive application taken from molecular biology. The principal aspects studied are compile time and execution time for the various implementations that were benchmarked. An important consideration is how the program can be modified and tuned to obtain maximal performance on each language implementation. With few exceptions, the compilers take a significant amount of time to compile this program, though most compilers were faster than the then current GNU C compiler (GCC version 2.5.8). Compilers that generate C or Lisp are often slower than those that generate native code directly: the cost of compiling the intermediate form is normally a large fraction of the total compilation time. There is no clear distinction between the runtime performance of eager and lazy implementations when appropriate annotations are used: lazy implementations have clearly come of age when it comes to implementing largely strict applications, such as the Pseudoknot program. The speed of C can be approached by some implementations, but to achieve this performance, special measures such as strictness annotations are required by non-strict implementations. The benchmark results have to be interpreted with care. Firstly, a benchmark based on a single program cannot cover a wide spectrum of ‘typical’ applications. Secondly, the compilers vary in the kind and level of optimisations offered, so the effort required to obtain an optimal version of the program is similarly varied. Pieter H. Hartel, Marc Feeley, Martin Helmut Alt, Lennart Augustsson, Marcel Beemster, Emmanuel Chailloux, Christine H. Flood, Wolfgang Grieskamp, John H. G. van Groningen, Kevin Hammond, Bogumil Hausman, Melody Y. Ivory, Richard E. Jones, Jasper Kamperman, Peter Lee 0001, Xavier Leroy, Rafael Dueire Lins, Sandra Loosemore, Niklas Röjemo, Manuel Serrano, Jean-Pierre Talpin, Jon Thackray, Pum Walters, Pierre Weis, Peter Wentworth |
J. Funct. Program. | 4 |
| 1994 | On Generating unique NamesabstractAnd Joktan begat Almodad, and Sheleph, and Hazarmaveth, and Jerah, and Handoram, and Uzal, and Diklah, and Obal, and Abimael, and Sheba, and Ophir, and Havilah, and Jobab: all these were the sons of Joktan. — Genesis 10:26–29 Lennart Augustsson, Mikael Rittri, Dan Synek |
J. Funct. Program. | 1 |
| 1993 | The Interactive Lazy ML SystemabstractAbstract In this paper we describe an implementation of an interactive version of the purely functional programming language Lazy ML (LML). The most remarkable fact about the interactive system is that it is written in a pure functional style using LML, yet the efficiency still compares favourably to other conventional interpretative systems. We describe how the system is designed, and also the exception mechanism that was added to facilitate the handling of errors in the system. Lennart Augustsson |
J. Funct. Program. | 1 |
| 1989 | The Chalmers Lazy-ML CompilerabstractWe present the principle and pragmatics of a compiler for Lazy ML, a lazy and purely functional variant of ML, developed at Chalmers University of Technology. The aim has been to develop an implementation that enables efficient execution on today's computers. The compiler itself has been written almost entirely in Lazy ML. We first briefly describe the Lazy ML language, in particular with respect to pattern matching, modules and separate compilation, and input/output. A programming example is given. We outline the general structure of the LML compiler and then describe in some depth the technical details of program transformation phases and the G-machine, the abstract machine underlying the implementation. Performance issues are also discussed. We describe some application programs written in LML, and the experience gained from them. Lennart Augustsson, Thomas Johnsson |
Comput. J. | 1 |