Attribute grammars as a functional programming paradigm
Proc. of a conference on Functional programming languages and computer architecture
ACM SIGPLAN Notices
Efficient compilation of lazy evaluation
SIGPLAN '84 Proceedings of the 1984 SIGPLAN symposium on Compiler construction
Algorithmic Program DeBugging
The Evaluation Dependence Tree as a Basis for Lazy FunctionalDebugging
Automated Software Engineering
Algorithmic Debugging for Lazy Functional Languages
PLILP '92 Proceedings of the 4th International Symposium on Programming Language Implementation and Logic Programming
Tracing Lazy Functional Computations Using Redex Trails
PLILP '97 Proceedings of the9th International Symposium on Programming Languages: Implementations, Logics, and Programs: Including a Special Trach on Declarative Programming Languages in Education
The Location of Errors in Functional Programs
AADEBUG '93 Proceedings of the First International Workshop on Automated and Algorithmic Debugging
The nofib Benchmark Suite of Haskell Programs
Proceedings of the 1992 Glasgow Workshop on Functional Programming
Complete and Partial Redex Trails of Functional Computations
IFL '97 Selected Papers from the 9th International Workshop on Implementation of Functional Languages
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
IFL '00 Selected Papers from the 12th International Workshop on Implementation of Functional Languages
Practical aspects of declarative debugging in Haskell 98
Proceedings of the 5th ACM SIGPLAN international conference on Principles and practice of declaritive programming
How to look busy while being as lazy as ever: the Implementation of a lazy functional debugger
Journal of Functional Programming
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
A lightweight interactive debugger for haskell
Haskell '07 Proceedings of the ACM SIGPLAN workshop on Haskell workshop
Comprehending finite maps for algorithmic debugging of higher-order functional programs
Proceedings of the 10th international ACM SIGPLAN conference on Principles and practice of declarative programming
ICLP '09 Proceedings of the 25th International Conference on Logic Programming
Abstract diagnosis of functional programs
LOPSTR'02 Proceedings of the 12th international conference on Logic based program synthesis and transformation
ICAISC'10 Proceedings of the 10th international conference on Artifical intelligence and soft computing: Part II
Controlling search space materialization in a practical declarative debugger
PADL'06 Proceedings of the 8th international conference on Practical Aspects of Declarative Languages
Functional programs that explain their work
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Hi-index | 0.00 |
The advantage of lazy functional languages is that programs may be written declaratively without specifying the exact evaluation order. The ensuing order of evaluation can however be quite involved which makes it difficult to debug such programs using traditional, operational techniques. A solution is to trace the computation in a way which focuses on the declarative aspects and hides irrelevant operational details. The main problem with this approach is the immense cost in time and space of tracing large computations. Dealing with these performance issues is thus the key to practical, general purpose debuggers for lazy functional languages. In this paper we show that computing partial traces on demand by re-executing the traced program is a viable way to overcome these difficulties. This allows any program to be traced using only a fixed amount of extra storage. Since it takes a lot of time to build a complete trace, most of which is wasted since only a fraction of a typical trace is investigated during debugging, partial tracing and repeated re-execution is also attractive from a time perspective. Performance figures are presented to substantiate our claims.