Journal Article10.1007/BF01806168
Debugging in applicative languages
John T. O'Donnell,Cordelia V. Hall +1 more
- 01 Sep 1988
- Vol. 1, Iss: 2, pp 113-145
37
TL;DR: This paper shows how to implement tracing and interactive debugging tools in a purely applicative style, which is more flexible, extensive and portable than debugging tools that require modification to the language implementation.
read more
Abstract: Applicative programming languages have several properties that appear to make debugging difficult. First, the absence of assignment statements complicates the notion of changing a program while debugging. Second, the absence of imperative input and output makes it harder to obtain information about what the program is doing. Third, the presence of lazy evaluation prevents the user from knowing much about the order in which events occur. Some solutions to these problems involve nonapplicative extensions to the language. Fortunately, the same features of applicative languages that cause problems for traditional debugging also support an idiomatic applicative style of programming, and effective debugging techniques can be implemented using that style. This paper shows how to implement tracing and interactive debugging tools in a purely applicative style. This approach is more flexible, extensive and portable than debugging tools that require modification to the language implementation.
read more
Chat with Paper
AI Agents for this Paper
Find similar papers on Google Scholar, PubMed and Arxiv
Write a critical review of this paper
Analyze citations of this paper to find unaddressed research gaps
Citations
Debugging Haskell by Observing Intermediate Data Structures
TL;DR: A portable debugger for full Haskell is described, building only on commonly implemented extensions, based on the concept of observation of intermediate data structures, rather than the more traditional stepping and variable examination paradigm used by traditional imperative debuggers.
110
Algorithmic Debugging for Lazy Functional Languages
Henrik Nilsson,Peter Fritzon +1 more
- 26 Aug 1992
TL;DR: This paper presents an algorithmic debugger for a lazy functional language and some experience in using it, and addresses the problem of providing the user with a strictified view of the execution trace whenever possible.
99
Algorithmic debugging for lazy functional languages
Henrik Nilsson,Peter Fritzson +1 more
TL;DR: This thesis presents a technique for debugging lazy functional programs declaratively and an efficient implementation of a declarative debugger for a large subset of Haskell, believed to be the first implementation of such a debugger which is sufficiently efficient to be useful in practice.
87
How to look busy while being as lazy as ever: the Implementation of a lazy functional debugger
TL;DR: The key idea is to construct a declarative trace which hides the operational details of lazy evaluation, however, to avoid excessive memory consumption, the trace is constructed one piece at a time, as needed, by automatic re-execution of the program being debugged.
70
The Evaluation Dependence Tree as a Basis for Lazy FunctionalDebugging
Henrik Nilsson,Jan Sparud +1 more
- 01 Apr 1997
TL;DR: A structure which is called the Evaluation Dependence Tree (EDT) is proposed which would be a viable basis for debugging lazy functional programs and two different construction methods are described.
69
References
•Book
Algorithmic Program Debugging
Ehud Shapiro
- 14 Apr 1983
TL;DR: An algorithm that can fix a bug that has been identified, and integrate it with the diagnosis algorithms to form an interactive debugging system that can debug programs that are too complex for the Model Inference System to synthesize.
1.2K
Why functional programming matters
TL;DR: In this article, the authors show that higher-order functions and lazy evaluation of functional languages can contribute significantly to modularity and that modularity is the key to successful software development.
•Book
The Art of Prolog: Advanced Programming Techniques
Leon Sterling,Ehud Shapiro +1 more
- 01 Jan 1994
TL;DR: The Prolog language as discussed by the authors is a language for pure Prolog programming with meta-logical predicates cuts and negation, and it can be used to develop game-playing programs as well as a credit evaluation expert system.
529
Automata, languages and programming : 30th International Colloquium, ICALP 2003, Eindhoven, the Netherlands, June 30-July 4, 2003 : proceedings
Jos C. M. Baeten,Jan Karel Lenstra,Joachim Parrow,Gerhard J. Woeginger +3 more
- 01 Jan 2003
TL;DR: Questions on RNA Secondary Structure Prediction and Design, Some Issues Regarding Search, Censorship, and Anonymity in Peer to Peer Networks, and Model Checking and Testing Combined.
171
Viewing a programming environment as a single tool
Norman M. Delisle,David E. Menicosy,Mayer D. Schwartz +2 more
- 25 Apr 1984
TL;DR: The techniques used to integrate Magpie, an interactive programming environment for Pascal, are described, which allows the programmer to specify debugging actions in Pascal, eliminating the need for a separate debugging language.
92
Related Papers (5)
Ehud Shapiro
- 14 Apr 1983