Demo Data from VLDB 2026 / reviewers in the wild / expert
Olaf Chitil
dblp:49/854
· DBLP profile ↗
15ranked-venue papers
9as first author
0since 2021 · last 2018
0000-0001-7986-9929ORCID · corroborated
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 14 · 8 first-authorTheory of computation · 3 · 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
3 papers |
Debugging and program repair · 79% Programming languages and type systems · 16% Compilers and program optimization · 5% | |
| Theoretical computer science
1 paper |
Algorithms and data structures · 100% |
Topics — the 6 heaviest of 8, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Debugging and program repair › automated debugging
algorithmic debugging |
0.5 | 2 | 2016 | Lightweight computation tree tracing for lazy functional languages · PLDI 2016 Algorithmic debugging of real-world haskell programs: deriving dependencies from the cost centre stack · PLDI 2015 |
Debugging and program repair
fault localization |
0.2 | 1 | 2015 | Algorithmic debugging of real-world haskell programs: deriving dependencies from the cost centre stack · PLDI 2015 |
Programming languages and type systems › functional language
lazy functional languages |
0.1 | 2 | 2016 | Lightweight computation tree tracing for lazy functional languages · PLDI 2016 Algorithmic debugging of real-world haskell programs: deriving dependencies from the cost centre stack · PLDI 2015 |
Programming languages and type systems
functional programming |
0.1 | 1 | 2005 | Pretty printing with lazy dequeues · ACM Trans. Program. Lang. Syst. 2005 |
Compilers and program optimization
pretty printing |
0.1 | 1 | 2005 | Pretty printing with lazy dequeues · ACM Trans. Program. Lang. Syst. 2005 |
Algorithms and data structures › dynamic data structures
persistent data structures |
0.0 | 1 | 2005 | Pretty printing with lazy dequeues · ACM Trans. Program. Lang. Syst. 2005 |
Methods — techniques the papers use, named apart from their topics
tracing library · 0.2program annotation · 0.2runtime value observations · 0.2cost centre stack · 0.2lazy evaluation · 0.1amortized complexity analysis · 0.1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2018 | Type generic observation of intermediate data structures for debugging lazy functional programs
Maarten Faddegon, Olaf Chitil |
Comput. Lang. Syst. Struct. | 2 |
| 2016 | Lightweight computation tree tracing for lazy functional languagesabstractA computation tree of a program execution describes computations of functions and their dependencies. A computation tree describes how a program works and is at the heart of algorithmic debugging. To generate a computation tree, existing algorithmic debuggers either use a complex implementation or yield a less informative approximation. We present a method for lazy functional languages that requires only a simple tracing library to generate a detailed computation tree. With our algorithmic debugger a programmer can debug any Haskell program by only importing our library and annotating suspected functions. Maarten Faddegon, Olaf Chitil |
PLDI | 2 |
| 2015 | Algorithmic debugging of real-world haskell programs: deriving dependencies from the cost centre stackabstractExisting algorithmic debuggers for Haskell require a transformation of all modules in a program, even libraries that the user does not want to debug and which may use language features not supported by the debugger. This is a pity, because a promising approach to debugging is therefore not applicable to many real-world programs. We use the cost centre stack from the Glasgow Haskell Compiler profiling environment together with runtime value observations as provided by the Haskell Object Observation Debugger (HOOD) to collect enough information for algorithmic debugging. Program annotations are in suspected modules only. With this technique algorithmic debugging is applicable to a much larger set of Haskell programs. This demonstrates that for functional languages in general a simple stack trace extension is useful to support tasks such as profiling and debugging. Maarten Faddegon, Olaf Chitil |
PLDI | 2 |
| 2012 | Practical typed lazy contractsabstractUntil now there has been no support for specifying and enforcing contracts within a lazy functional program. That is a shame, because contracts consist of pre- and post-conditions for functions that go beyond the standard static types. This paper presents the design and implementation of a small, easy-to-use, purely functional contract library for Haskell, which, when a contract is violated, also provides more useful information than the classical blaming of one contract partner. From now on lazy functional languages can profit from the assurances in the development of correct programs that contracts provide. Olaf Chitil |
ICFP | 1 |
| 2011 | A semantics for lazy assertionsabstractLazy functional programming languages need lazy assertions to ensure that assertions preserve the meaning of programs. Examples in this paper demonstrate that previously proposed lazy assertions nonetheless break basic semantic equivalences, because they include a non-deterministic disjunction combinator. The objective of this paper is to determine "correct" definitions for lazy assertions. The starting point is our formalisation of basic properties such as laziness, taking them as axioms of our design space. We develop the first denotational semantics for lazy assertions; assertions denote subdomains. We define a weak disjunction combinator and together with a conjunction combinator assertions form a bounded distributive lattice. From the established laws we derive an efficient prototype implementation of lazy assertions for Haskell as a library. Olaf Chitil |
PEPM | 1 |
| 2009 | Essentials of Programming Languages (third edition) by Daniel P. Friedman and Mitchell Wand, MIT Press, ISBN 978-0-262-06279-4, 2008abstractBook review Olaf Chitil |
J. Funct. Program. | 1 |
| 2009 | Linear, bounded, functional pretty-printingabstractAbstract We present two implementations of Oppen's pretty-printing algorithm in Haskell that meet the efficiency of Oppen's imperative solution but have a simpler and a clear structure. We start with an implementation that uses lazy evaluation to simulate two co-operating processes. Then we present an implementation that uses higher-order functions for delimited continuations to simulate co-routines with explicit scheduling. S. Doaitse Swierstra, Olaf Chitil |
J. Funct. Program. | 2 |
| 2008 | Comprehending finite maps for algorithmic debugging of higher-order functional programsabstractAlgorithmic debuggers for higher-order functional languages have to display functional values. Originally functional values had been represented as partial applications of function and constructor symbols, but a recent approach represents functional values as finite maps. The two representations require the computation tree that is central to algorithmic debugging to be structured rather differently. In this paper we present a unifying framework that formally defines algorithmic debugging for both representations in an implementation-independent way for both strict and non-strict functional languages. On this basis we prove the soundness of algorithmic debugging with finite maps. Our framework shows how a single implementation can support both forms of algorithmic debugging. The proof exposed that algorithmic debugging with finite maps does not handle arbitrary functional programs, but in current practice the problematic ones are excluded by the type system. Both framework and proof suggest variations of algorithmic debugging with finite maps and thus are tools for further improvement of this form of debugging Olaf Chitil, Thomas Davie |
PPDP | 1 |
| 2007 | Monadic, Prompt Lazy Assertions in Haskell
Olaf Chitil, Frank Huch |
APLAS | 1 |
| 2006 | Combining algorithmic debugging and program slicingabstractCurrently, program slicing and algorithmic debugging are two of the most relevant debugging techniques for declarative languages. They help programmers to find bugs in a semiautomatic manner. On the one hand, program slicing is a technique to extract those program fragments that (potentially) affect the values computed at some point of interest. On the other hand, algorithmic debugging is able to locate a bug by automatically generating a series of questions and processing the programmer's answers. In this work, we show for functional languages how the combination of both techniques produces a more powerful debugging schema that reduces the number of questions that programmers must answer to locate a bug Josep Silva, Olaf Chitil |
PPDP | 2 |
| 2005 | Pretty printing with lazy dequeuesabstractThere are several purely functional libraries for converting tree structured data into indented text, but they all make use of some backtracking. Over twenty years ago, Oppen published a more efficient imperative implementation of a pretty printer. This article shows that the same efficiency is also obtainable without destructive updates by developing a similar but purely functional Haskell implementation with the same complexity bounds. At its heart lie two lazy double ended queues. Olaf Chitil |
ACM Trans. Program. Lang. Syst. | 1 |
| 2004 | Observing Functional Logic Computations
Bernd Brassel, Olaf Chitil, Michael Hanus, Frank Huch |
PADL | 2 |
| 2001 | Compositional Explanation of Types and Algorithmic Debugging of Type ErrorsabstractThe type systems of most typed functional programming languages are based on the Hindley-Milner type system. A practical problem with these type systems is that it is often hard to understand why a program is not type correct or a function does not have the intended type. We suggest that at the core of this problem is the difficulty of explaining why a given expression has a certain type. The type system is not defined compositionally. We propose to explain types using a variant of the Hindley-Milner type system that defines a compositional type explanation graph of principal typing. We describe how the programmer understands types by interactive navigation through the explanation graph. Furthermore, the explanation graph can be the foundation for algorithmic debugging of type errors, that is, semi-automatic localisation of the source of a type error without even having to understand the type inference steps. We implemented a prototype of a tool to explore the usefulness of the proposed methods. Olaf Chitil |
ICFP | 1 |
| 1999 | Type Inference Builds a Short Cut to DeforestationabstractDeforestation optimises a functional program by transforming it into another one that does not create certain intermediate data structures. Short cut deforestation is a deforestation method which is based on a single, local transformation rule. In return, short cut deforestation expects both producer and consumer of the intermediate structure in a certain form. Warm fusion wan proposed to automatically transform functions into this form. Unfortunately, it is costly and hard to implement. Starting from the fact that short cut deforestation is based on a parametricity theorem of the second-order typed λ-calculus, we show how the required form of a list producer can be derived by the use of type inference. Typability for the second-order typed λ-calculus is undecidable. However, we present a linear-time algorithm that solves a partial type inference problem and that, together with controlled inlining and polymorphic type instantiation, suffices for deforestation. The resulting new short cut deforestation algorithm is efficient and removes more intermediate lists than the original. Olaf Chitil |
ICFP | 1 |
| 1997 | The c-Semantics: A Comprehensive Semantics for Functional ProgramsabstractA comprehensive semantics for functional programs is presented, which generalizes the well-known call-by-value and call-by-name semantics. By permitting a separate choice between call-by value and call-by-name for every argument position of every function and parameterizing the semantics by this choice we abstract from the parameter-passing mechanism. Thus common and distinguishing features of all instances of the ζ-semantics, especially call-by-value and call-by-name semantics, are highlighted. Furthermore, a property can be validated for all instances of the ζ-semantics by a single proof. This is employed for proving the equivalence of the given denotational (fixed-point based) and two operational (reduction based) definitions of the ζ-semantics. We present and apply means for very simple proofs of equivalence with the denotational ζ-semantics for a large class of reduction-based ζ-semantics. Our basis are simple first-order constructor-based functional programs with patterns. Olaf Chitil |
Fundam. Informaticae | 1 |