Abstract
Debugging Functional Programs
Programmers using functional programming languages also need support
for debugging their programs. Conventional debugging methods are
ill-suited for these languages, in particular pure, lazy languages
such as Haskell. Instead, debugging methods should take advantage of
the simple semantics of pure functional languages, that is, explicit
data flow and absence of side effects. Hence different and arguably
more powerful debugging methods have been developed for pure
functional languages. I will demonstrate several methods and compare
them. Afterwards I will describe a tracing framework for combining
these different debugging methods. On the practical side this
framework allows several debugging tools to use the same trace of a
computation. On the theoretical side it provides a simple model for
proving properties of debugging methods and developing them further.