Driving in the Jungle
- 145 Downloads
Collapsed jungle evaluation is an evaluation strategy for functional programs that can give super-linear speedups compared to conventional evaluation strategies such as call-by-need. However, the former strategy may incur administrative evaluation overhead. We demonstrate how this overhead can be eliminated by transforming the program using a variation of positive supercompilation in which the transformation strategy is based on collapsed jungle evaluation. In penetrating the constantfactor barrier, we seem to be close to establishing a transformation technique that guarantees the efficiency of the transformed program. As a spin-off, we clarify the relationship between call-by-name, call-by-need and collapsed-jungle evaluation, showing that all three can be expressed as instances of a common semantics in which the variations — differing only in efficiency — are obtained by varying the degree of sharing in a dag representation.
Unable to display preview. Download preview PDF.
- J. Gallagher. Tutorial in specialisation of logic programs. In Proceeding of the ACM SIGPLAN Syposium on Partial Evaluation and Semantics-Based Program Manipulation, pages 88–98. ACM Press, 1993.Google Scholar
- R. Glück and A.V. Klimov. Occam’s razor in metacomputation: the notion of a perfect process tree. In P. Cousot, M. Falaschi, G. Filè, and G. Rauzy, editors, Workshop on Static Analysis, volume 724 of Lecture Notes in Computer Science, pages 112–123. Springer-Verlag, 1993.Google Scholar
- Annegret Habel, Hans-Jörg Kreowski, and Detlef Plump. Jungle evaluation. Fundamenta Informaticae, XV:37–60, 1991.Google Scholar
- Neil D. Jones, Carsten K. Gomard, and Peter Sestoft. Partial Evaluation and Automatic Program Generation. Prentice-Hall, 1993.Google Scholar
- A. Pettorossi, E. Pietropoli, and M. Proietti. The use of the tupling strategy in the development of parallel programs. In R. Paige, J. Reif, and R. Wachter, editors, Parallel Algorithm Derivation and Program Transformation, pages 111–151. Kluwer Academic Publishers, 1993.Google Scholar
- Alberto Pettorossi. A powerful strategy for deriving efficient programs by transformation. In Conference Record of the 1984 ACM Symposium on Lisp and Functional Programming, pages 273–281. ACM, ACM, August 1984.Google Scholar
- Gordon D. Plotkin. A structural approach to operational semantics. Technical Report DAIMI FN-19, Computer Science Department, Aarhus University, Aarhus, Denmark, September 1981.Google Scholar
- M.H. Sørensen and R. Glück. An algorithm of generalization in positive supercompilation. In J.W. Lloyd, editor, Logic Programming: Proceedings of the 1995 International Symposium, pages 465–479. MIT Press, 1995.Google Scholar
- Morten Heine Sørensen and Robert Glück. Introduction to supercompilation. In John Hatcliff, Torben Mogensen, and Peter Thiemann, editors, Partial Evaluation: Practice and Theory, volume 1706 of Lecture Notes in Computer Science, pages 246–270. Springer-Verlag, 1999.Google Scholar
- V. F. Turchin. The algorithm of generalization in the supercompiler. In D. Bjørner, A. P. Ershov, and N. D. Jones, editors, Partial Evaluation and Mixed Computation, pages 531–549, Amsterdam: North-Holland, 1988. Elsevier Science Publishers B.V.Google Scholar
- V.F. Turchin and A.P. Nemytykh. A self-applicable supercompiler. Technical Report CSc. TR 95-010, City College of the City University of New York, 1995.Google Scholar
- Christopher Peter Wadsworth. Semantics and pragmatics of the lambda calculus. Ph.D. thesis, Programming Research Group, Oxford University, September 1971.Google Scholar