A Program Transformation for Tracing Functional Logic Computations

Tracing program executions is a promising technique to find bugs in lazy functional logic programs. In previous work we developed an extension of a heap based semantics for functional logic languages which generates a trace reflecting the computation of the program. This extension was also prototypically implemented by instrumenting an interpreter for functional logic programs. Since this interpreter is too restricted for real world applications, we developed a program transformation which efficiently computes the trace by means of side effects during the computation. This paper presents our program transformation.

[1]  Michael Hanus,et al.  Curry: an integrated functional logic language (version 0 , 2003 .

[2]  Werner Kluge,et al.  Implementation of Functional Languages , 1996, Lecture Notes in Computer Science.

[3]  Michael Hanus,et al.  Observing Functional Logic Computations , 2004, PADL.

[4]  Sergio Antoy Stephen Johnson,et al.  TeaBag: A Functional Logic Language Debugger ? , 2004 .

[5]  Germán Vidal,et al.  A semantics for tracing declarative multi-paradigm programs , 2004, PPDP '04.

[6]  Colin Runciman,et al.  Tracing Lazy Functional Computations Using Redex Trails , 1997, PLILP.

[7]  Pieter H. Hartel,et al.  Programming Languages: Implementations, Logics, and Programs , 1996, Lecture Notes in Computer Science.

[8]  Francisco Javier López-Fraguas,et al.  TOY: A Multiparadigm Declarative System , 1999, RTA.

[9]  Germán Vidal,et al.  Operational semantics for declarative multi-paradigm languages , 2005, J. Symb. Comput..

[10]  Ehud Shapiro,et al.  Algorithmic Program Debugging , 1983 .

[11]  Henrik Nilsson,et al.  The Evaluation Dependence Tree as a Basis for Lazy Functional Debugging , 1997, Automated Software Engineering.

[12]  Michael Hanus,et al.  Distributed Programming in a Multi-Paradigm Declarative Language , 1999, PPDP.

[13]  Gill Andy Debugging Haskell by Observing Intermediate Data Structures , 2001 .

[14]  Colin Runciman,et al.  Freja, Hat and Hood - A Comparative Evaluation of Three Systems for Tracing and Debugging Lazy Functional Programs , 2000, IFL.

[15]  Rafael Caballero,et al.  DDT: a Declarative Debugging Tool for Functional-Logic Languages , 2004, FLOPS.

[16]  Peyton Jones,et al.  Haskell 98 language and libraries : the revised report , 2003 .

[17]  John Hughes,et al.  A Novel Representation of Lists and its Application to the Function "reverse" , 1986, Inf. Process. Lett..