Skip to main content
Log in

The Evaluation Dependence Tree as a Basis for Lazy Functional Debugging

  • Published:
Automated Software Engineering Aims and scope Submit manuscript

Abstract

Lazy functional languages are declarative and allow the programmer to write programs where operational issues such as the evaluation order are left implicit. This should be reflected in the design of debuggers for such languages to avoid burdening the programmer with operational details, e.g. concerning the actual evaluation order. Conventional debugging techniques tend to focus too much on operational aspects to be suitable in this context. A record of the execution that only captures the declarative aspects of the execution, leaving out operational details, would be a viable basis for debugging lazy functional programs. Various declarative debugging tools could then be developed on top of such records. In this paper we propose a structure which we call the Evaluation Dependence Tree (EDT) for this purpose, and we describe two different construction methods. Performance problems are discussed along with possible solutions.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  • Mireille Ducassé. An Extendable Trace Analyser to Support Automated Debugging. PhD thesis, University of Rennes I, Campus de Beaulieu, 35042 Rennes cedex, France, June 1992. Numéro d'ordre 758. European Doctorate. In English.

    Google Scholar 

  • Cordelia V. Hall and John T. O'Donnell. Debugging in a side effect free programming environment. In Proceedings of the ACM SIGPLAN 85 Symposium on Language Issues in Programming Environments, pages 60–68, Seattle, Washington, June 1985. Proceedings published in ACM SIGPLAN Notices 20(7).

  • Paul Hudak and Joseph H. Fasel. A gentle introduction to Haskell. ACM SIGPLAN Notices, 27(5), May 1992.

  • Paul Hudak, Simon L. Peyton Jones, Philip Wadler, Brian Boutel, Jon Fairbairn, Joseph Fasel, María M. Guzmán, Kevin Hammond, John Hughes, Thomas Johnsson, Dick Kieburtz, Rishiyur Nikhil, Will Partain, and John Peterson. Report on the programming language Haskell. ACM SIGPLAN Notices, 27(5), May 1992. Version 1.2.

  • Samuel Kamin. A debugging environment for functional programming in Centaur. Research report, Institut National de Recherche en Informatique et en Automatique (INRIA), Domaine de Voluceau, Rocquencourt, B.P.105, 78153 Le Chesnay Cedex, France, July 1990.

    Google Scholar 

  • Amir Kishon and Paul Hudak. Semantics directed program execution monitoring. Journal of Functional Programming, 5(4):501–547, October 1995.

    Google Scholar 

  • Lee Naish and Tim Barbour. Towards a portable lazy functional declarative debugger. Technical Report 95/27, Department of Computer Science, University of Melbourne, Australia, 1995.

    Google Scholar 

  • Henrik Nilsson. A declarative approach to debugging for lazy functional languages. Licentiate Thesis No. 450, Department of Computer and Information Science, Linköping University, S-581 83, Linköping, Sweden, September 1994.

    Google Scholar 

  • Henrik Nilsson and Peter Fritzson. Algorithmic debugging for lazy functional languages. Journal of Functional Programming, 4(3):337–370, July 1994.

    Google Scholar 

  • Henrik Nilsson and Jan Sparud. The evaluation dependence tree: an execution record for lazy functional debugging. Research Report LiTH-IDA-R-96-23, Department of Computer and Information Science, Linköping University, S-581 83, Linköping, Sweden, August 1996.

    Google Scholar 

  • John T. O'Donnell and Cordelia V. Hall. Debugging in applicative languages. Lisp and Symbolic Computation, 1(2):113–145, 1988.

    Google Scholar 

  • Simon L. Peyton Jones. The Implementation of Functional Programming Languages. Prentice Hall, 1987.

  • Ehud Y. Shapiro. Algorithmic Program Debugging. MIT Press, May 1982.

  • Jan Sparud. A transformational approach to debugging lazy functional programs. Licentiate Thesis, Department of Computing Science, Chalmers University of Technology, S-412 96, Göteborg, Sweden, February 1996.

    Google Scholar 

  • Günter Specht. Generating explanation trees even for negations in deductive database systems. In Proceedings of the 5th Workshop on Logic Programming Environments, pages 8–13, Vancouver, Canada, October 1993.

  • Andrew Tolmach and Andrew W. Appel. A debugger for Standard ML. Journal of Functional Programming, 5(2):155–200, April 1995.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

About this article

Cite this article

Nilsson, H., Sparud, J. The Evaluation Dependence Tree as a Basis for Lazy Functional Debugging. Automated Software Engineering 4, 121–150 (1997). https://doi.org/10.1023/A:1008681016679

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1023/A:1008681016679

Navigation