Abstract

Tracing and Debugging of Lazy Functional Programs

The lack of tools for tracing and debugging has deterred software developers from using functional languages. Conventional debuggers for imperative languages give the user access to otherwise invisible information about a computation by allowing the user to step through the program computation, stop at given points and examine variable contents. This tracing method is unsuitable for lazy functional languages, because their evaluation order is complex, function arguments are usually unwieldly large unevaluated expressions and generally computation details do not match the user's high-level view of functions mapping values to values. In this talk we present three different methods for tracing lazy functional programs. For each method exists a tool which implements it.