LISP and Symbolic Computation, 1(2)113-145
Debugging in Applicative Languages
John T. O'Donnell, Computer Science Department, Indiana University, Bloomington, IN 47405
Cordelia V. Hall, Computer Science Department, Indiana University, Bloomington, IN 47405
|
Abstract: Applicative programming languages have several
properties that appear to make debugging difficult. First, the absence
of assignment statements complicates the notion of changing a program
while debugging. Second, the absence of imperative input and output
makes it harder to obtain information about what the program is
doing. Third, the presence of lazy evaluation prevents the user from
knowing much about the order in which events occur. Some solutions to
these problems involve nonapplicative extensions to the
language. Fortunately, the same features of applicative languages that
cause problems for traditional debugging also support an idiomatic
applicative style of programming, and effective debugging techniques
can be implemented using that style. This paper shows how to implement
tracing and interactive debugging tools in a purely applicative
style. This approach is more flexible, extensive and portable than
debugging tools that require modification to the language
implementation.
|
This article is not available online.
|
|