Record Details

Lambda-Dropping: Transforming Recursive Equations into Programs with Block Structure

BRICS Report Series

View Archive Info
 
 
Field Value
 
Title Lambda-Dropping: Transforming Recursive Equations into Programs with Block Structure
 
Creator Danvy, Olivier
Schultz, Ulrik P.
 
Description Lambda-lifting a block-structured program transforms it into a set of recursive equations. We present the symmetric transformation: lambda-dropping. Lambda-dropping a set of recursive equations restores block structure and lexical scope. For lack of block structure and lexical scope, recursive equations must carry around all the parameters that any of their callees might possibly need. Both lambda-lifting and lambda-dropping thus require one to compute Def/Use paths:for lambda-lifting: each of the functions occurring in the path of a free variable is passed this variable as a parameter;for lambda-dropping: parameters which are used in the same scope as their definition do not need to be passed along in their path.A program whose blocks have no free variables is scope-insensitive. Its blocks are then free to float (for lambda-lifting) or to sink (for lambda-dropping) along the vertices of the scope tree. Our primary application is partial evaluation. Indeed, many partial evaluators for procedural programs operate on recursive equations. To this end, they lambda-lift source programs in a pre-processing phase. But often, partial evaluators [automatically] produce residual recursive equations with dozens of parameters, which most compilers do not handle efficiently. We solve this critical problem by lambda-dropping residual programs in a post-processing phase, which significantly improves both their compile time and their run time. Lambda-lifting has been presented as an intermediate transformation in compilers for functional languages. We study lambda-lifting and lambda-dropping per se, though lambda-dropping also has a use as an intermediate transformation in a compiler: we noticed that lambda-dropping a program corresponds to transforming it into the functional representation of its optimal SSA form. This observation actually led us to substantially improve our PEPMĀ '97 presentation of lambda-dropping.Superseded by BRICS-RS-99-27.
 
Publisher Aarhus University
 
Contributor
 
Date 1998-12-03
 
Type info:eu-repo/semantics/article
info:eu-repo/semantics/publishedVersion

 
Identifier https://tidsskrift.dk/brics/article/view/21959
10.7146/brics.v5i54.21959
 
Source BRICS Report Series; No 54 (1998): RS-54 Lambda-Dropping: Transforming Recursive Equations into Programs with Block Structure
BRICS Report Series; No 54 (1998): RS-54 Lambda-Dropping: Transforming Recursive Equations into Programs with Block Structure
1601-5355
0909-0878
 
Rights Copyright (c) 2015 BRICS Report Series