Abstract
In this paper, we give a re-formulation of our previously defined distillation algorithm, which can automatically transform higher-order functional programs into equivalent tail-recursive programs. Our re-formulation simplifies the presentation of the transformation and hopefully makes it easier to understand. Using distillation, it is possible to produce superlinear improvement in the run-time of programs. This represents a significant advance over deforestation, partial evaluation and positive supercompilation, which can only produce a linear improvement.
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Jones, N., Gomard, C., Sestoft, P.: Partial Evaluation and Automatic Program Generation. Prentice Hall, Englewood Cliffs (1993)
Wadler, P.: Deforestation: Transforming Programs to Eliminate Trees. In: Ganzinger, H. (ed.) ESOP 1988. LNCS, vol. 300, pp. 344–358. Springer, Heidelberg (1988)
Turchin, V.: The Concept of a Supercompiler. ACM Transactions on Programming Languages and Systems 8(3), 90–121 (1986)
Sørensen, M., Glück, R., Jones, N.: A Positive Supercompiler. Journal of Functional Programming 6(6), 811–838 (1996)
Sørensen, M.: Turchin’s Supercompiler Revisited. Master’s thesis, Department of Computer Science, University of Copenhagen, DIKU-rapport 94/17 (1994)
Wadler, P.: The Concatenate Vanishes. FP Electronic Mailing List (December 1987)
Hamilton, G.W.: Distillation: Extracting the Essence of Programs. In: Proceedings of the ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation, pp. 61–70 (2007)
Higman, G.: Ordering by Divisibility in Abstract Algebras. Proceedings of the London Mathemtical Society 2, 326–336 (1952)
Kruskal, J.: Well-Quasi Ordering, the Tree Theorem, and Vazsonyi’s Conjecture. Transactions of the American Mathematical Society 95, 210–225 (1960)
Dershowitz, N., Jouannaud, J.P.: Rewrite Systems. In: van Leeuwen, J. (ed.) Handbook of Theoretical Computer Science, pp. 243–320. Elsevier, MIT Press (1990)
Sørensen, M., Glück, R.: An Algorithm of Generalization in Positive Supercompilation. In: Tison, S. (ed.) CAAP 1994. LNCS, vol. 787, pp. 335–351. Springer, Heidelberg (1994)
Marlet, R.: Vers une Formalisation de l’Évaluation Partielle. PhD thesis, Université de Nice - Sophia Antipolis (1994)
Bol, R.: Loop Checking in Partial Deduction. Journal of Logic Programming 16(1-2), 25–46 (1993)
Leuschel, M.: On the Power of Homeomorphic Embedding for Online Termination. In: Proceedings of the International Static Analysis Symposium, pp. 230–245 (1998)
Miller, D.: A Logic Programming Language with Lambda-Abstraction, Function Variables and Simple Unification. In: Schroeder-Heister, P. (ed.) ELP 1989. LNCS, vol. 475, pp. 253–281. Springer, Heidelberg (1991)
Nipkow, T.: Functional Unification of Higher-Order Patterns. In: Eighth Annual Symposium on Logic in Computer Science, pp. 64–74 (1993)
Hamilton, G.W.: Distilling Programs for Verification. Electronic Notes in Theoretical Computer Science 190(4), 17–32 (2007)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2010 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Hamilton, G.W. (2010). Extracting the Essence of Distillation. In: Pnueli, A., Virbitskaite, I., Voronkov, A. (eds) Perspectives of Systems Informatics. PSI 2009. Lecture Notes in Computer Science, vol 5947. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-11486-1_13
Download citation
DOI: https://doi.org/10.1007/978-3-642-11486-1_13
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-11485-4
Online ISBN: 978-3-642-11486-1
eBook Packages: Computer ScienceComputer Science (R0)