Author:
Nilsson Henrik,Fritzson Peter
Abstract
AbstractLazy functional languages have non-strict semantics and are purely declarative, i.e. they support the notion of referential transparency and are devoid of side-effects. Traditional debugging techniques are, however, not suited for lazy functional languages, since computations generally do not take place in the order one might expect. Sincealgorithmic debuggingallows the user to concentrate on the declarative aspects of program semantics, and will semi-automatically find functions containing bugs, we propose to use this technique for debugging lazy functional programs. Because of the non-strict semantics of lazy functional languages, arguments to functions are in general partially evaluated expressions. The user is, however, usually more concerned with the values that these expressions represent. We address this problem by providing the user with astrictifiedview of the execution trace whenever possible. In this paper, we present an algorithmic debugger for a lazy functional language based on strictification and some experience in using it. A number of problems with the current implementation of the debugger (e.g. too large trace size and too many questions asked) are also discussed and some techniques for overcoming these problems, at least partially, are suggested. The key techniques areimmediate strictificationandpiecemeal tracing.
Publisher
Cambridge University Press (CUP)
Reference30 articles.
1. Augustsson L. (1984) A compiler for lazy ML. In: Proceedings ACM Conference on LISP and Functional Programming, pp. 218–227, 08.
2. Utilizing fifth generation technology in software development tools
3. Augustsson L. (1987) Compiling Lazy Functional Languages part II. PhD thesis, Department of Computer Science, Chalmers University of Technology, 12.
4. Kishon A. , Hudak P. and Consel C. (1991) Monitoring semantics: A formal framework for specifying, implementing, and reasoning about execution monitors. In: Proceedings ACM SIGPLAN Conference on Programming Language Design and Implementation, Toronto, Canada, June.
5. Drabent W. , Nadjm-Tehrani S. and Maluszynski J. (1988) The use of assertions in algorithmic debugging. In: Proceedings FGCS Conference, Tokyo, Japan, pp. 573–581.
Cited by
37 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Explainable dynamic programming;Journal of Functional Programming;2021
2. Adaptable Traces for Program Explanations;Programming Languages and Systems;2021
3. Provenance-enhanced Algorithmic Debugging;Proceedings of the XXXIII Brazilian Symposium on Software Engineering;2019-09-23
4. A Survey of Algorithmic Debugging;ACM Computing Surveys;2018-07-31
5. Algorithmic debugging generalized;Journal of Logical and Algebraic Methods in Programming;2018-06