Summary: TeaBag: A Functional Logic Language Debugger
Sergio Antoy Stephen Johnson
Computer Science Department, Portland State University,
P.O. Box 751, Portland, OR 97207, U.S.A.
13th Int. Workshop on Functional and (Constraint) Logic Programming (WFLP04), Aachen, Germany -- June 1, 2004.
Technical Report, Department of Computer Science of RWTH Aachen, AIB-2004-05, June 2004, pp. 4-18.
Abstract. We describe a debugger for functional logic computations. The debugger is an accessory of a virtual machine
currently under development. A distinctive feature of this machine is its operational completeness of computations, which
places novel demands on a debugger. We give an overview of the debugger's features, in particular the handling of non-
determinism, the ability to control non-deterministic steps, to remove context information, to toggle eager evaluation, and
to set breakpoints on both functions and terms. We briefly describe the debugger's architecture and its interaction with
the associated virtual machine. Finally, we describe a short debugging session of a defective program to show in action
debugger features and window screenshots.
Functional logic programming joins in a single programming paradigm characterizing features of
functional and logic programming. There are a number of languages with this aim, e.g., Curry ,
Escher , Le Fun , Life , Mercury , NUE-Prolog , Oz  and Toy , to name a
few. These languages support user-defined functions and the subsequent evaluation of expressions
involving these functions. Debugging functional computations of this kind is a non-trivial, but well-