Skip to main content
Article thumbnail
Location of Repository

Observing Functional Logic Computations

By Bernd Brassel, Olaf Chitil, Michael Hanus and Frank Huch


A lightweight approach to debugging functional logic programs by observations is presented, implemented for the language Curry. The Curry Object Observation System (COOSy) comprises a portable library plus a viewing tool. A programmer can observe data structures and functions by annotating expressions in his program. The possibly partial values of observed expressions that are computed during program execution are recorded in a trace file, including information on non-deterministic choices and logical variables. A separate viewing tool displays the trace content. COOSy covers all aspects of modern functional logic multiparadigm languages such as lazy evaluation, higher order functions, non-deterministic search, logical variables, concurrency and constraints. Both use and implementation of COOSy are described

Topics: QA76
Publisher: Springer
Year: 2004
OAI identifier:

Suggested articles


  1. (1997). A unified computation model for functional and logic programming. doi
  2. (1994). Algorithmic debugging for lazy functional languages. doi
  3. (1983). Algorithmic Program Debugging.
  4. (2002). Curry: An integrated functional logic language (vers. 0.7.2). Available at,
  5. (2001). Debugging Haskell by observing intermediate data structures. In doi
  6. (1998). Declarative Debugging for Lazy Functional Languages. doi
  7. (1998). Declarative Debugging for Lazy Functional Languages. PhD thesis, Link¨ oping,
  8. (1996). Declarative debugging in constraint logic programming. doi
  9. (2001). GHood – graphical visualisation and animation of Haskell object observations.
  10. (2003). Haskell 98 language and libraries: the revised report.
  11. (2000). Hat and Hood – a comparative evaluation of three systems for tracing and debugging lazy functional programs. doi
  12. (1990). High-level server side web scripting in Curry. In doi
  13. (2001). Multiple-view tracing for Haskell. doi
  14. (2003). PAKCS: The Portland Aachen Kiel Curry System. Available at,
  15. (2003). Practical aspects of declarative debugging in Haskell-98. doi
  16. (1994). The integration of functions into logic programming: From theory to practice. doi
  17. (1988). The use of assertions in algorithmic debugging.
  18. Theoretical foundations for the declarative debugging of lazy functional logic programs. doi
  19. (1997). Tracing lazy functional computations using redex trails. doi
  20. (1997). Walk backwards to happiness - debugging by time travel.

To submit an update or takedown request for this paper, please submit an Update/Correction/Removal Request.