Techniques for Simplifying the Visualization of Graph Reduction

  • Sandra P. Foubister
  • Colin Runciman
Conference paper
Part of the Workshops in Computing book series (WORKSHOPS COMP.)


Space and time problems still occasionally dog the functional programmer, despite increasingly efficient implementations and the recent spate of useful profiling tools. There is a need for a model of program reduction that relates directly to the user’s code and has a simple graphical representation. Naïve graph reduction provides this. We address the problems of displaying a series of program graphs which may be long, and the elements of which may be large and complex. We offer a scheme for compacting an individual display by creating a quotient graph through defining equivalence classes, and a similar scheme for reducing the number of graphs to show. A metalanguage to allow the user to define compaction rules gives the model flexibility. A prototype system exists in a Haskell implementation.


Spatial Filter Program Graph Label Function Graph Tree Functional Language 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    David V. Beard and John Q. Walker II. Navigational techniques to improve the display of large two-dimensional spaces. Behaviour and Information Technology, 9 (6): 451–466, 1990.CrossRefGoogle Scholar
  2. [2]
    Chris Clack, Stuart Clayman, and David Parott. Lexical Profiling: Theory and Practice. Technical report, University College London, 1993 (to appear in the Journal of Functional Programming).Google Scholar
  3. [3]
    Sandra P. Foubister. Graphical application and visualization of lazy functional computation. D.Phil thesis, University of York, 1995 (forthcoming).Google Scholar
  4. [4]
    Samuel Kamin. A debugging environment for functional programming in Centaur. Technical Report 1265, INRIA-Sophia Antipolis, 1990.Google Scholar
  5. [5]
    H. Lieberman. Steps Toward Better Debugging Tools for Lisp. In ACM Symposium on LISP and Functional Programming, pages 247–255, 1984.CrossRefGoogle Scholar
  6. [6]
    H. Nilsson and P. Fritzson. Algorithmic Debugging of Lazy Functional Languages. In M. Bruynooghe and M. Wirsing, editors, Programming Language Implementation and Logic Programming, pages 385–389, Leuven, Belgium, 1992. Springer Verlag.CrossRefGoogle Scholar
  7. [7]
    Simon Peyton Jones and David Lester. Implementing functional languages: a tutorial Prentice Hall, 1992.Google Scholar
  8. [8]
    Colin Runciman and David Wakeling. Heap profiling of lazy functional programs. Journal of Functional Programming, 3 (2), 1993.Google Scholar
  9. [9]
    Patrick M. Sansom. Execution profiling for non-strict functional languages. Ph.D. thesis, University of Glasgow, 1994.Google Scholar
  10. [10]
    Robin A. Snyder. Lazy Debugging of Functional Programs. New Generation Computing, 8: 139–161, 1990.CrossRefGoogle Scholar
  11. [11]
    J. Taylor. A System For Representing The Evaluation of Lazy Functions. Technical report, Department of Computer Science, Queen Mary and Westfield College, 1991.Google Scholar

Copyright information

© Springer-Verlag London 1995

Authors and Affiliations

  • Sandra P. Foubister
    • 1
  • Colin Runciman
    • 2
  1. 1.Institute for Computer Based LearningHeriot-Watt UniversityRiccarton, EdinburghUK
  2. 2.Department of Computer ScienceUniversity of YorkHeslington, YorkUK

Personalised recommendations