Techniques for Simplifying the Visualization of Graph Reduction
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.
KeywordsCompaction Lester Omited
Unable to display preview. Download preview PDF.
- 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
- Sandra P. Foubister. Graphical application and visualization of lazy functional computation. D.Phil thesis, University of York, 1995 (forthcoming).Google Scholar
- Samuel Kamin. A debugging environment for functional programming in Centaur. Technical Report 1265, INRIA-Sophia Antipolis, 1990.Google Scholar
- Simon Peyton Jones and David Lester. Implementing functional languages: a tutorial Prentice Hall, 1992.Google Scholar
- Colin Runciman and David Wakeling. Heap profiling of lazy functional programs. Journal of Functional Programming, 3 (2), 1993.Google Scholar
- Patrick M. Sansom. Execution profiling for non-strict functional languages. Ph.D. thesis, University of Glasgow, 1994.Google Scholar
- 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