Debugging programs written in lazy functional languages is diicult, 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 arèdeclarative'. Hence it is advantageous if debugging takes place at the same, high level of abstraction. Thus, we propose to base debugging on what we call Evaluation Dependence Trees (EDT), which reeect 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 exibility: components realizing the two levels may be chosen independently to suit the debugging problem at hand.
[1]
Ehud Shapiro,et al.
Algorithmic Program Debugging
,
1983
.
[2]
Jan Sparud,et al.
An Embryo to a Debugger for Haskell
,
1994
.
[3]
Henrik Nilsson,et al.
Algorithmic debugging for lazy functional languages
,
1992,
Journal of Functional Programming.
[4]
Henrik Nilsson,et al.
A Declarative Approach to Debugging for Lazy Functional Languages
,
1994
.
[5]
Ian Toyn.
Exploratory environments for functional programming
,
1987
.
[6]
Samuel Kamin.
A debugging environment for functional programming in CENTAUR
,
1990
.
[7]
WadlerPhilip,et al.
Report on the programming language Haskell
,
1992
.
[8]
Cordelia V. Hall,et al.
Debugging in applicative languages
,
1988,
LISP Symb. Comput..