Run-time debugging for functional logic languages
نویسنده
چکیده
This thesis describes the design, implementation and use of a run-time debugging tool for understanding the lazy semantics and locating failures in the functional logic language Curry. We provide a means for programmers to step in the evaluation order of program expressions at a source code level. Every expression evaluated is detected by a program coverage in a layout of the source code. Its run-time value can be represented to the user. The user can stop the execution of a program whenever he or she chooses to do so. A means to backward stepping is also provided. For large programs, we record only partial computations that are generated by evaluating selected expressions from the user. To achieve these means, we suggest and use some annotations in programs. Representation of intermediate steps of evaluations in a single-step mode is also provided by a distributed programming technique. Stepping in the real order of lazy evaluations could be helpful in searching for failures in simple programs and to beginners in understanding the behavior of functions in functional logic languages.
منابع مشابه
A Declarative Debugger for a Logical-Functional Language
Logic and functional programming languages have many advantages and there is a growing trend to develop languages which incorporate both these paradigms. One of the disadvantages of such languages is that the execution mechanisms are so complex that traditional debugging methods are diicult to use. Declarative debugging techniques have been successful applied to Prolog and more recently functio...
متن کاملA Debugging Model for Functional Logic Programs
This paper presents a box-oriented debugging model for the functional logic language ALF. Due to the sophisticated operational semantics of ALF which is based on innermost basic narrowing with simplification, the debugger must reflect the application of the different computation rules during program execution. Hence our debugging model includes not only one box type as in Byrd’s debugging model...
متن کاملUsing Global Analysis, Partial Speciications, and an Extensible Assertion Language for Program Validation and Debugging
We present a framework for the application of abstract interpretation as an aid during program development, rather than in the more traditional application of program optimization. Program validation and detection of errors is rst performed statically by comparing (partial) speciications written in terms of assertions against information obtained from static analysis of the program. The results...
متن کاملA Declarative Debugging Scheme
We present a very simple but flexible declarative debugging scheme. A Abstract-1 declarative debugger can be defined in Prolog with a single clause, and relies on the definition of just two additional predicates. With suitable definitions of these predicates, the debugger can diagnose several classes of bugs in many languages. We give examples of diagnoses of wrong answers in functional, relati...
متن کاملComputational Logic in Australia
interpretation is a language-independent theory for static analysis of programs. This theory plays a prominent role in much work in the group, since most sophisticated implementation ideas require static analysis. The work contributes to the theory generally, as well as its applications in functional and logic programming, including sophisticated program transformation. Techniques are also bein...
متن کامل