A Slicing Tool for Lazy Functional Logic Programs
نویسندگان
چکیده
Program slicing is a well-known technique that has been widely used for debugging in the context of imperative programming. Debugging is a particularly difficult task within lazy declarative programming. In particular, there exist very few approaches to program slicing in this context. In this paper, we describe a slicing tool for firstorder lazy functional logic languages. We also illustrate its usefulness by means of an example.
منابع مشابه
A Lightweight Approach to Program Specialization⋆
Within the imperative programming paradigm, program slicing has been widely used as a basis to solve many software engineering problems, like debugging, testing, differencing, specialization, and merging. In this work, we present a lightweight approach to program specialization of lazy functional logic programs which is based on dynamic slicing. The kind of specialization performed by our appro...
متن کاملDynamic slicing of lazy functional programs based on redex trails
Tracing computations is a widely used methodology for program debugging. Lazy languages, however, pose new demands on tracing techniques because following the actual trace of a computation is generally useless. Typically, tracers for lazy languages rely on the construction of a redex trail, a graph that stores the reductions performed in a computation. While tracing provides a significant help ...
متن کاملHigher-Order Lazy Functional Slicing
Program slicing is a well known family of techniques intended to identify and isolate code fragments which depend on, or are depended upon, specific program entities. This is particularly useful in the areas of reverse engineering, program understanding, testing and software maintenance. Most slicing methods, and corresponding tools, target either the imperative or the object oriented paradigms...
متن کاملThe Unfolding Semantics of Functional Programs
The idea of using unfolding as a way of computing a program semantics has been applied successfully to logic programs and has shown itself a powerful tool that provides concrete, implementable results, as its outcome is actually source code. Thus, it can be used for characterizing not-so-declarative constructs inmostly declarative languages, or for static analysis. However, unfolding-based sema...
متن کاملUsing Dependence Graphs for Slicing Functional Programs
One of the popular ways to perform automated analysis of programs is by manipulating slices — reduced executable programs derived from the originals by removing some steps in such a way that they replicate parts of the original behaviour [18]. Such slices are useful for debugging and comprehension, refactoring and restructuring, reverse engineering and maintenance, model checking, as well as ot...
متن کامل