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.