Abstract
Lambda-lifting and lambda-dropping respectively transform a block-structured functional program into recursive equations and vice versa. Lambda-lifting was developed in the early 80’s, whereas lambda-dropping is more recent. Both are split into an analysis and a transformation. Published work, however, has only concentrated on the analysis parts. We focus here on the transformation parts and more precisely on their correctness, which appears never to have been proven. To this end, we define extensional versions of lambda-lifting and lambda-dropping and establish their correctness with respect to a least fixed-point semantics.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Bondorf, A.: Similix manual, system version 3.0. Technical Report 91/9, DIKU, Computer Science Department, University of Copenhagen, Copenhagen, Denmark (1991)
Clinger, W., Hansen, L.T.: Lambda, the ultimate label, or a simple optimizing compiler for Scheme. In: Talcott, C.L. (ed.) Proceedings of the 1994 ACM Conference on Lisp and Functional Programming, LISP Pointers, Orlando, Florida, vol. VII(3), pp. 128–139. ACM Press, New York (1994)
Conse, C.: A tour of Schism: A partial evaluation system for higher-order applicative languages. In: Schmidt, D.A. (ed.) Proceedings of the Second ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation, Copenhagen, Denmark, pp. 145–154. ACM Press, New York (1993)
Danvy, O., Schultz, U.P.: Lambda-dropping: transforming recursive equations into programs with block structure. In: Consel, C. (ed.) Proceedings of the ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation, Amsterdam, The Netherlands, pp. 90–106. ACM Press, New York (1997); Extended version available as the technical report BRICS-RS-97-6
Hughes, J.: Super combinators: A new implementation method for applicative languages. In: Friedman, D.P., Wise, D.S. (eds.) Conference Record of the 1982 ACM Symposium on Lisp and Functional Programming, Pittsburgh, Pennsylvania, pp. 1–10. ACM Press, New York (1982)
Johnsson, T.: Lambda lifting: Transforming programs to recursive equations. In: Jouannaud, J.-P. (ed.) FPCA 1985. LNCS, vol. 201, pp. 190–203. Springer, Heidelberg (1985)
Meijer, E.: Down with lambda-lifting. Unpublished note (April 1992)
Jones, S.P., Partain, W., Santos, A.: Let-floating: moving bind-ings to give faster programs. In: Kent Dybvig, R. (ed.) Proceedings of the 1996 ACM SIGPLAN International Conference on Functional Programming, pp. 1–12. ACM Press, New York (1996)
Jones, S.L.P.: The Implementation of Functional Programming Languages. Prentice Hall International Series in Computer Science. Prentice-Hall International, Englewood Cliffs (1987)
Schultz, U.P.: Implicit and explicit aspects of scope and block structure. Master’s thesis, DAIMI, Department of Computer Science, University of Aarhus, Aarhus, Denmark (June 1997)
Winskel, G.: The Formal Semantics of Programming Languages. Foundation of Computing Series. The MIT Press, Cambridge (1993)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1999 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Danvy, O. (1999). An Extensional Characterization of Lambda-Lifting and Lambda-Dropping. In: Middeldorp, A., Sato, T. (eds) Functional and Logic Programming. FLOPS 1999. Lecture Notes in Computer Science, vol 1722. Springer, Berlin, Heidelberg. https://doi.org/10.1007/10705424_16
Download citation
DOI: https://doi.org/10.1007/10705424_16
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-66677-6
Online ISBN: 978-3-540-47950-5
eBook Packages: Springer Book Archive