## Complete and Partial Redex Trails of Functional Computations (1997)

Venue: | Selected papers from 9th Intl. Workshop on the Implementation of Functional Languages (IFL'97 |

Citations: | 13 - 3 self |

### BibTeX

@INPROCEEDINGS{Sparud97completeand,

author = {Jan Sparud and Colin Runciman},

title = {Complete and Partial Redex Trails of Functional Computations},

booktitle = {Selected papers from 9th Intl. Workshop on the Implementation of Functional Languages (IFL'97},

year = {1997},

pages = {160--177},

publisher = {Springer LNCS}

}

### Years of Citing Articles

### OpenURL

### Abstract

. Redex trails are histories of functional computations by graph reduction; their main application is fault-tracing. A prototype implementation of a tracer based on redex trails [8] demonstrated the promise of the technique, but was limited in two respects: (1) trails did not record every reduction, only those constructing a new value; (2) even so computing trails was very expensive, particularly in terms of the memory space they occupied. In this paper, we address both problems: complete redex trails provide a full computational record; partial versions of these trails exclude all but selected details, greatly reducing memory costs. We include results of experiments tracing several applications, including a compiler. 1 Introduction Programs do not always work first time. When they fail, programmers cannot always see the reason immediately. Implementors must therefore provide some way of tracing computations. By examining traces, programmers can see not only final results o...

### Citations

97 | A critique of Standard ML
- Appel
- 1993
(Show Context)
Citation Context ...putations. Five years ago, Andrew Tolmach described in his thesis [10] a comprehensive tracing and debugging system for the eager functional language ML. A shorter and more recent account is given in =-=[9]-=-. Tolmach's system, like ours, worked by compile-time transformation of the program. He also happened to use machines very similar to our own (MIPS workstations with about 100 Mb of memory). He succes... |

32 | Tracing Lazy Functional Computations Using Redex Trails
- Sparud, Runciman
- 1292
(Show Context)
Citation Context ...s.york.ac.uk) Abstract. Redex trails are histories of functional computations by graph reduction; their main application is fault-tracing. A prototype implementation of a tracer based on redex trails =-=[8]-=- demonstrated the promise of the technique, but was limited in two respects: (1) trails did not record every reduction, only those constructing a new value; (2) even so computing trails was very expen... |

30 | Formally based profiling for higher-order functional languages
- Sansom, Peyton-Jones
- 1997
(Show Context)
Citation Context ...language such as ML and a lazy one such as Haskell. In a paper at last year's IFL workshop [1] Jarvis and Morgan reported their experience extending the cost-centre profiler in Glasgow's GHC compiler =-=[7]-=- for use with large programs. Their motivating application was the LOLITA natural language system --- at over 50,000 source lines one of the largest Haskell applications to date. Cost-centres are labe... |

28 | The evaluation dependence tree as a basis for lazy functional debugging
- Nilsson, Sparud
- 1997
(Show Context)
Citation Context ...s and suggests future work. 2 A Redex-Trail Tracing System Suppose the function length is defined by the equations length [] = 0 length (x:xs) = 1 + length xs and we compute 3 as the result of length =-=[1,2,3]-=-. Figure 1 shows a trace of that computation in the form of a redex trail. The parent redex of the final 3 is 1+2. Considering subexpressions in that redex, everything but the 2 was constructed as an ... |

20 | Highlights from nhc: a space-efficient haskell compiler
- Röjemo
- 1995
(Show Context)
Citation Context ...mediate result of reducing the original expression length [1,2,3], but the 2 came about by reduction of 1+1. And so on. As described in a previous paper [8], we have modified the Haskell compilersnhc =-=[5, 6]-=- to provide traces based on redex trails. On request, our modified compiler applies a program transformation causing each value in the compiled program to be computed along with a redex trail recordin... |

15 | Profiling Large–scale Lazy Functional Programs
- Morgan, Jarvis
- 1998
(Show Context)
Citation Context ...s and suggests future work. 2 A Redex-Trail Tracing System Suppose the function length is defined by the equations length [] = 0 length (x:xs) = 1 + length xs and we compute 3 as the result of length =-=[1,2,3]-=-. Figure 1 shows a trace of that computation in the form of a redex trail. The parent redex of the final 3 is 1+2. Considering subexpressions in that redex, everything but the 2 was constructed as an ... |

15 | Lag, drag, void and use — heap profiling and space-efficient compilation revisited
- Röjemo, Runciman
- 1996
(Show Context)
Citation Context ...mediate result of reducing the original expression length [1,2,3], but the 2 came about by reduction of 1+1. And so on. As described in a previous paper [8], we have modified the Haskell compilersnhc =-=[5, 6]-=- to provide traces based on redex trails. On request, our modified compiler applies a program transformation causing each value in the compiled program to be computed along with a redex trail recordin... |

9 |
Tracing Lazy Evaluation by Program Transformation
- Watson
- 1996
(Show Context)
Citation Context ...(n-1) + nfib (n-2) Fig. 13. Input for the nfib-nhc computation. 6 Related Work The problem of tracing functional computations has been tackled previously by numerous researchers. In his recent thesis =-=[11]-=-, Watson usefully reviews over twenty different schemes. But many proposed solutions have been unsuitable for full-scale applications. We concentrate here on a selection of previous work specifically ... |

5 | The evaluation dependence tree: an execution record for lazy functional debugging
- Nilsson, Sparud
- 1996
(Show Context)
Citation Context ...he context of length itself. Higher-order Functions However, matters get more complicated when we decide to trust a higher-order function. Figure 6 shows a full redex trail from the result of map dbl =-=[1, 2, 3]-=-, where dbl is a function that doubles its argument. Suppose we trust map but not dbl. Should we then trust the result of map dbl [1, 2, 3]? Clearly not. The problem is that the trusted function map b... |

5 |
The Sphinx Problem Book
- Phillips
- 1934
(Show Context)
Citation Context ...- p - - - - - - - - - - - - - - - - - - White to play and mate in 3 Fig. 11. The problem used as input to the mate program. "A striking task achievement presented with due regard to artistic cano=-=ns." [4]-=-. Chess-playing readers might like to verify that solving it requires a significant amount of computation! As one would expect, the mate computation is dominated by functions testing and sifting board... |