ABSTRACT
Designing debugging tools for lazy functional programming languages is a complex task which is often solved by expensive tracing of lazy computations. We present a new approach in which the information collected as a trace is reduced considerably (kilobytes instead of megabytes). The idea is to collect a kind of step information for a call-by-value interpreter, which can then efficiently reconstruct the computation for debugging/viewing tools, like declarative debugging. We show the correctness of the approach, discuss a proof-of-concept implementation with a declarative debugger as back end and present some benchmarks comparing our new approach with the Haskell debugger Hat.
- B. Braßel, S. Fischer, M. Hanus, F. Huch, and G. Vidal. Lazy Call-By-Value Evaluation. Technical report, CAU Kiel, 2007, esp. the Appendix.Google Scholar
- A. Gill. Debugging Haskell by Observing Intermediate Data Structures. In Proc. of the 4th Haskell Workshop. Technical report of the University of Nottingham, 2000.Google Scholar
- J. Launchbury. A Natural Semantics for Lazy Evaluation. In Proc. of the ACM Symp. on Principles of Programming Languages (POPL'93), pages 144--154. ACM Press, 1993. Google Scholar
Digital Library
- H. Nilsson. Tracing Piece by Piece: Affordable Debugging for Lazy Functional Languages. In Proc. of the 1999 Int'l Conf. on Functional Programming (ICFP'99), pages 36--47. ACM Press, 1999. Google Scholar
Digital Library
- H. Nilsson. How to look busy while being as lazy as ever: the implementation of a lazy functional debugger. Journal of Functional Programming, 11 (6): 629--671, 2001. Google Scholar
Digital Library
- H. Nilsson and J. Sparud. The Evaluation Dependence Tree as a Basis for Lazy Functional Debugging. Automated Software Engineering, 4 (2): 121--150, 1997. Google Scholar
Digital Library
- S. L. Peyton Jones, editor. Haskell 98 Language and Libraries - The Revised Report. Cambridge University Press, 2003.Google Scholar
- B. Pope. Declarative Debugging with Buddha. In V. Vene and T. Uustalu, editors, Advanced Functional Programming, 5th International School, AFP 2004, volume 3622 of Lecture Notes in Computer Science, pages 273--308. Springer Verlag, September 2005. ISBN 3-540-28540-7. Google Scholar
- B. Pope and Lee Naish. Practical aspects of declarative debugging in Haskell-98. In Fifth ACM SIGPLAN Conference on Principles and Practice of Declarative Programming, pages 230--240, 2003. ISBN 1-58113-705-2. Google Scholar
Digital Library
- P. M. Sansom and S. L. Peyton Jones. Formally Based Profiling for Higher-Order Functional Languages. ACM Transactions on Programming Languages and Systems, 19 (2): 334--385, 1997. Google Scholar
Digital Library
- E. Shapiro. Algorithmic Program Debugging. MIT Press, Cambridge, Massachusetts, 1983. Google Scholar
Digital Library
- J. Sparud and C. Runciman. Complete and Partial Redex Trails of Functional Computations. In Proc. of the 9th Int'l Workshop on the Implementation of Functional Languages (IFL'97), pages 160--177. Springer LNCS 1467, 1997a. Google Scholar
Digital Library
- J. Sparud and C. Runciman. Tracing Lazy Functional Computations Using Redex Trails. In Proc. of the 9th Int'l Symp. on Programming Languages, Implementations, Logics and Programs (PLILP'97), pages 291--308. Springer LNCS 1292, 1997b. Google Scholar
Digital Library
- M. Wallace, O. Chitil, T. Brehm, and C. Runciman. Multiple-View Tracing for Haskell: a New Hat. In Proc. of the 2001 ACM SIGPLAN Haskell Workshop. Universiteit Utrecht UU-CS-2001-23, 2001.Google Scholar
Index Terms
Lazy call-by-value evaluation
Recommendations
Lazy call-by-value evaluation
Proceedings of the ICFP '07 conferenceDesigning debugging tools for lazy functional programming languages is a complex task which is often solved by expensive tracing of lazy computations. We present a new approach in which the information collected as a trace is reduced considerably (...
Fine-grained Visualization Pipelines and Lazy Functional Languages
The pipeline model in visualization has evolved from a conceptual model of data processing into a widely used architecture for implementing visualization systems. In the process, a number of capabilities have been introduced, including streaming of data ...
Circularity and Lambda Abstraction: From Bird to Pettorossi and back
IFL '13: Proceedings of the 25th symposium on Implementation and Application of Functional LanguagesWe present a transformation between lazy circular programs à la Bird and strict circular programs à la Pettorossi. Circular programs à la Bird rely on lazy recursive binding: they involve circular unknowns and make sense equationally. Circular programs ...







Comments