Lambda lifting: transforming programs to recursive equations
Proc. of a conference on Functional programming languages and computer architecture
Automatic autoprojection of recursive equations with global variable and abstract data types
Science of Computer Programming
Control-flow analysis of higher-order languages of taming lambda
Control-flow analysis of higher-order languages of taming lambda
Implementing functional languages
Implementing functional languages
Lambda, the ultimate label or a simple optimizing compiler for Scheme
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
Let-floating: moving bindings to give faster programs
Proceedings of the first ACM SIGPLAN international conference on Functional programming
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Lambda-dropping: transforming recursive equations into programs with block structure
Theoretical Computer Science - Partial evaluation and semantics-based program manipulation
Higher-Order and Symbolic Computation
Subtyping with Singleton Types
CSL '94 Selected Papers from the 8th International Workshop on Computer Science Logic
Super-combinators a new implementation method for applicative languages
LFP '82 Proceedings of the 1982 ACM symposium on LISP and functional programming
A type-based escape analysis for functional languages
Journal of Functional Programming
The Implementation of Functional Programming Languages (Prentice-Hall International Series in Computer Science)
Automatic partial inversion of inductively sequential functions
IFL'06 Proceedings of the 18th international conference on Implementation and application of functional languages
Hi-index | 0.00 |
We present a formal and general specification of lambda lifting and prove its correctness with respect to a call-by-name operational semantics. We use this specification to prove the correctness of a lambda lifting algorithm similar to the one proposed by Johnsson. Lambda lifting is a program transformation that eliminates free variables from functions by introducing additional formal parameters to function definitions and additional actual parameters to function calls. This operation supports the transformation from a lexically-structured functional program into a set of recursive equations. Existing results provide specific algorithms and only limited correctness results. Our work provides a more general specification of lambda lifting (and related operations) that supports flexible translation strategies, which may result in new implementation techniques. Our work also supports a simple framework in which the interaction of lambda lifting and other optimizations can be studied and from which new algorithms might be obtained.