Why no one uses functional languages
ACM SIGPLAN Notices
The Evaluation Dependence Tree as a Basis for Lazy FunctionalDebugging
Automated Software Engineering
Introduction to Functional Programming
Introduction to Functional Programming
Compiling Haskell by Program Transformation: A Report from the Trenches
ESOP '96 Proceedings of the 6th European Symposium on Programming Languages and Systems
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
Monads for Functional Programming
Advanced Functional Programming, First International Spring School on Advanced Functional Programming Techniques-Tutorial Text
Complete and Partial Redex Trails of Functional Computations
IFL '97 Selected Papers from the 9th International Workshop on Implementation of Functional Languages
Deriving a lazy abstract machine
Journal of Functional Programming
Towards a purely functional debugger for functional programs
FP'95 Proceedings of the 1995 international conference on Functional Programming
Hi-index | 0.00 |
The debugging of lazy functional programs is a non yet satisfactorily solved problem. Different approaches have been proposed during the last years, all of them having a property in common: The graph produced by the traced program is different from the original graph, i.e. the one without traces. In this paper we propose a cleaner and more modular approach to the trace problem. We regard traces as observations of the program and at the same time we want to preserve the original graph. In this way, a clean separation between the trace and the program being observed is established. Consequently, there may be variables in the trace referencing parts of the graph (i.e. pointers from the trace to the graph), but not the other way around. By doing so the correctness is guaranteed, as the normal execution process is not altered. In order to reach this goal, a monadic approach is followed. The success of the approach is shown by simulating three up-to-date Haskell tracers.