We present a source-to-source transformation of Haskell 98 programs for the purpose of debugging. The source code of a program is transformed into a new program which, when executed, computes the value of the original program and a high-level semantics for that computation. The semantics is given by a tree whose nodes represent function applications that were evaluated during execution. This tree is useful in situations where a high-level view of a computation is needed, such as declarative debugging. The main contribution of the paper is the treatment of higher-order functions, which have previously proven difficult to support in declarative debugging schemes.
|Cite as: Pope, B. and Naish, L. (2003). A Program Transformation for Debugging Haskell 98. In Proc. Twenty-Sixth Australasian Computer Science Conference (ACSC2003), Adelaide, Australia. CRPIT, 16. Oudshoorn, M. J., Ed. ACS. 227-236. |
(local if available)