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.