Strictification of Lazy Functions Jo~ao Saraiva
Abstract:
This papers describes a transformation from lazy functions into efficient non-lazy ones. The functions we study perform multiple traversals over a data structure. Our transformation performs a global analysis of the calling structure of a set of mutually recursive lazy-functions in order to transform them into sets of functions which must be called in sequence. Many of the resulting functions can be eliminated by the optimizations presented in this paper. We present measurements that show that transformed and optimized functions allow efficient incremental execution. The paper contains examples that were automatically constructed with a generator of incremental functional programs. 1
Citations
| 366 | Deforestation: Transforming programs to eliminate trees – Wadler - 1988 |
| 78 | Attribute grammars as a functional programming paradigm – JOHNSSON - 1987 |
| 76 | Ordered Attribute Grammars – Kastens - 1980 |
| 71 | Using circular programs to eliminate multiple traversals of data – Bird - 1984 |
| 59 | Higher order attribute grammars – Swiestra, Vogt - 1991 |
| 57 | Lazy memo-functions – Hughes - 1985 |
| 15 | Virtual data structures – Swierstra, Moor - 1993 |
| 13 | Using cached functions and constructors for incremental attribute evaluation – Pennings, Swierstra, et al. - 1992 |
| 9 | Generating Incremental Evaluators – Pennings - 1994 |
| 5 | and Doaitse Swierstra. Using attribute grammars to derive eOEcient functional programs – Kuiper - 1987 |
| 5 | Efficient incremental evaluation of higher order attribute grammars – Vogt, Swierstra, et al. - 1991 |
| 2 | Functional programming with bananas, lenses and barbed wire – Meyer, Fokkinga, et al. - 1991 |

