AADEBUG'95 Abstract

The Architecture of a Debugger for Lazy Functional Languages

Jan Sparud and Henrik Nilsson

Jan Sparud
Chalmers University of Technology
Department of Computing Science
S-412 96 Göteborg, Sweden

Henrik Nilsson
Linköping University
Department of Computer and Information Science
S-581 83 Linköping, Sweden

Debugging programs written in lazy functional languages is difficult, and there are currently no realistic, general purpose debugging tools available. The basic problem is that computations in general do not take place in the order one might expect. Furthermore, lazy functional languages to a large extent free programmers from concerns regarding operational issues such as evaluation order, i.e. they are `declarative'. Debugging should therefore take place at the same, high level of abstraction. Thus, we propose to base debugging on what we call Evaluation Dependence Trees (EDT), which reflect the declarative semantics of the programs rather than operational concerns such as evaluation order. This in turn naturally suggests a two level debugger architecture where the lower level generates the EDT and the upper level allows the user to investigate it. The main advantage of this is flexibility: components realizing the two levels may be chosen independently to suit the debugging problem at hand.

AADEBUG'95 Program

AADEBUG'95 home page


This page is maintained by Stéphane Schoenig. Please send us any comments or suggestions.