Tracing a computation is a key method for program comprehension and debugging. Hat is a tracing system for Haskell 98 programs. During a computation a trace is recorded in a file; then the user studies the trace with a collection of viewing tools. Different views are complementary and can productively be used together. Experience shows that users of the viewing tools find it hard to keep orientation and navigate to a point of interest in the trace. Hence this paper describes a new viewing tool where navigation through the trace is based on the program source. The tool combines ideas from algorithmic debugging, traditional stepping debuggers and dynamic program slicing.


Current Node Program Source Functional Language Faulty Node Runtime Error 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Braßel, B., Hanus, M., Huch, F., Vidal, G.: A semantics for tracing declarative multi-paradigm programs. In: Proceedings of the 6th ACM-SIGPLAN International Conference on Principles and Practice of Declarative Programming, pp. 179–190. ACM Press, New York (2004)CrossRefGoogle Scholar
  2. 2.
    Chitil, O., Runciman, C., Wallace, M.: Freja, Hat and Hood — A comparative evaluation of three systems for tracing and debugging lazy functional programs. In: Mohnen, M., Koopman, P. (eds.) IFL 2000. LNCS, vol. 2011, pp. 176–193. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  3. 3.
    Chitil, O., Runciman, C., Wallace, M.: Transforming Haskell for tracing. In: Peña, R., Arts, T. (eds.) IFL 2002. LNCS, vol. 2670, pp. 165–181. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  4. 4.
    Claessen, K., Runciman, C., Chitil, O., Hughes, J., Wallace, M.: Testing and tracing lazy functional programs using QuickCheck and Hat. In: Jeuring, J., Jones, S.L.P. (eds.) AFP 2002. LNCS, vol. 2638, pp. 59–99. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  5. 5.
    Nilsson, H.: Declarative Debugging for Lazy Functional Languages. PhD thesis, Linköping, Sweden (May 1998)Google Scholar
  6. 6.
    Nilsson, H., Sparud, J.: The evaluation dependence tree as a basis for lazy functional debugging. Automated Software Engineering: An International Journal 4(2), 121–150 (1997)CrossRefGoogle Scholar
  7. 7.
    Ochoa, C., Silva, J., Vidal, G.: Dynamic Slicing Based on Redex Trails. In: Proc. of the ACM SIGPLAN 2004 Symposium on Partial Evaluation and Program Manipulation (PEPM 2004), pp. 123–134. ACM Press, New York (2004)CrossRefGoogle Scholar
  8. 8.
    Pope, B., Naish, L.: Practical aspects of declarative debugging in Haskell 1998. In: Fifth ACM SIGPLAN Conference on Principles and Practice of Declarative Programming, pp. 230–240 (2003)Google Scholar
  9. 9.
    Shapiro, E.Y.: Algorithmic Program Debugging. MIT Press, Cambridge (1983)Google Scholar
  10. 10.
    Sparud, J., Runciman, C.: Complete and partial redex trails of functional computations. In: Clack, C., Hammond, K., Davie, T. (eds.) IFL 1997. LNCS, vol. 1467, pp. 160–177. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  11. 11.
    Sparud, J., Runciman, C.: Tracing lazy functional computations using redex trails. In: Hartel, P.H., Kuchen, H. (eds.) PLILP 1997. LNCS, vol. 1292, pp. 291–308. Springer, Heidelberg (1997)CrossRefGoogle Scholar
  12. 12.
    Tip, F.: A survey of program slicing techniques. Journal of programming languages 3, 121–189 (1995)Google Scholar
  13. 13.
    Wallace, M., Chitil, O., Brehm, T., Runciman, C.: Multiple-view tracing for Haskell: a new Hat. In: Preliminary Proceedings of the 2001 ACM SIGPLAN Haskell Workshop, UU-CS-2001-23. Universiteit Utrecht (2001); Final proceedings to appear in ENTCS 59(2)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2005

Authors and Affiliations

  • Olaf Chitil
    • 1
  1. 1.University of KentUK

Personalised recommendations