Skip to main content
Article thumbnail
Location of Repository

Comprehending Finite Maps for Algorithmic Debugging of Higher-Order Functional Programs

By Olaf Chitil and Thomas Davie


Algorithmic debuggers for higher-order functional languages have to display functional values. Originally functional values had been represented as partial applications of function and constructor symbols, but a recent approach represents functional values as finite maps. The two representations require the computation tree that is central to algorithmic debugging to be structured rather differently. In this paper we present a unifying framework that formally defines algorithmic debugging for both representations in an implementation-independent way. On this basis we prove the soundness of algorithmic debugging with finite maps. Our framework shows how a single implementation can support both forms of algorithmic debugging. The proof exposed that algorithmic debugging with finite maps does not handle arbitrary functional programs, but in current practice the problematic ones are excluded by Haskell's type system. Both framework and proof suggest variations of algorithmic debugging with finite maps and thus are tools for further improvement of this form of debugging

Topics: QA76
Publisher: ACM
Year: 2008
OAI identifier:

Suggested articles


  1. (2006). A Declarative Debugger for Haskell. doi
  2. (1997). A declarative debugging scheme. doi
  3. (1978). A theory of type polymorphism in programming. doi
  4. (1983). Algorithmic Program Debugging.
  5. (2005). Declarative debugging with Buddha. doi
  6. (2006). Display of functional values for debugging.
  7. (2007). Lazy call-by-value evaluation. doi
  8. (2001). Multiple-view tracing for Haskell: a new Hat.
  9. Proving the correctness of algorithmic debugging for functional programs.
  10. (2007). Structure and properties of traces for functional programs. doi
  11. (1997). The evaluation dependence tree as a basis for lazy functional debugging.
  12. (2001). Theoretical foundations for the declarative debugging of lazy functional logic programs. doi
  13. (1999). Tracing piece by piece: affordable debugging for lazy functional languages. doi
  14. (2003). Transforming Haskell for tracing. doi

To submit an update or takedown request for this paper, please submit an Update/Correction/Removal Request.