| Olivier Danvy and Ulrik P. Schultz. Lambda-dropping: Transforming recursive equations into programs with block structure. Theoretical Computer Science, 248(1-2):243--287, 2000. |
....of static arguments. For completeness, we summarize other related works. A.W.Appel suggests similar one to static argument transformation for SML NJ compiler to expose inlining recursive functions[1] O. Danvy suggests lambda dropping to restore the original block structure of lambda lifted program[4]. Static argument transformation is used to preserve laziness in deforestation[15] and to make the application of strictness analysis more frequently[18] 6 Conclusion and Further Work We suggest a practical implementation of root optimization using new tags and specialized runtime routines to ....
Oliver Danvy and Ulrik P. Schultz. Lambda-dropping: Transforming recursive equations into programs with block structure. In ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation, 1997.
....procedure parameters (although the problems they deal with seem to be actually quite di erent from the one treated in this paper) For example, in the context of logic programming, Leuschel and S rensen [15] presented a method for removing redundant arguments of predicates. Danvy and Schultz [3] presented a method for removing redundant variables occurring as a result of a transformation called lambda dropping. 7. CONCLUDING REMARKS We have formalized a type based method for UVE and shown its correctness and optimality. It is widely known that type systems and ow analyses are closely ....
O. Danvy and U. P. Schultz. Lambda-dropping: Transforming recursive equations into programs with block structure. Theor. Comput. Sci., Nov. 2000. A preliminary version appeared as BRICS Report RS-99-27.
....published lambda lifters does. This does not come as a complete surprise because closure conversion [21] a close relative to lambda lifting gives rise to typing problems, too [15, 27, 26, 2] Essentially, all presentations of various aspects of lambda lifting deal with untyped languages [10, 17, 19, 20, 6]. This is fine, because they are solving an important problem in an untyped intermediate language after type checking has been performed. In addition, most of them are informal, which makes it hard to analyze the properties of the transformations and to compare them. To enable the analysis of the ....
....actual work [25, 1] our EXPAND transformation can decrease their number before transforming to an explicitly typed calculus. Finally, our breakdown of lambda lifting into its elementary steps simplifies proofs of further properties of lambda lifting. For example, considering lambda dropping [6] an inverse to lambda lifting it is easy to see that only SPLIT applied backwards gives rise to typing problems. It is also easy to show that our lambda lifter does not change the complexity of any function. Acknowledgment Thanks to Simon Helsen for implementing the transformation. ....
Olivier Danvy and Ulrik P. Schultz. Lambda-dropping: Transforming recursive equations into programs. In Charles Consel, editor, Proc. ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation PEPM '97, pages 90--106, Amsterdam, The Netherlands, June 1997. ACM Press.
....are no specialisation points and no global log, so the associated problems cannot occur. Block structure is naturally rebuilt in the reduced programs. 8. 2 Lambda lifting and lambda dropping Recently, Danvy has worked on defining lambdadropping , the inverse transformation of lambda lifting 9 [Dan95]. This suggests a different way to obtain a blockstructured residual program: to lambda drop the residual program from a standard specialiser. This raises the question of how such a program would correspond to the residual programs from the algorithm suggested here. Under which conditions would ....
O. Danvy. Lambda-dropping: transforming recursive equations into programs with block structure. DART 252, Computer Science Department, Aarhus University, Aarhus, Denmark, January 1995.
....functions and recursive data types be handled differently, which is undesirable. And yet more would be needed in an untyped or impure setting. A quite separate, complementary, approach to inlining recursive functions is variously described by [App94] loop headers ) Ser97] labels inline ) [DS97] ( lambdadropping ) and [San95] the static argument transformation ) The common idea is to turn a recursive function definition into a non recursive function containing a local, recursive definition. Thus we can, for example, transform the standard recursive definition of map: map = f xs ....
O Danvy and UP Schultz. Lambda-dropping: transforming recursive equations into programs with block structure. In ACM SIGPLAN Symposium on Partial Evaluation and SemanticsBased Program Manipulation (PEPM '97), volume 32 of SIGPLAN Notices, pages 90--106, Amsterdam, June 1997. ACM.
....from that. This procedure is used in [Sew94] to increase the scope of first order analyses, and thus the number of programs for which a first order analysis gives useful results. A transformation that at first sight seems very similar to the static argument transformation is lambda dropping [Dan95] but a closer look shows that there are major differences between what we and [Dan95] do. Dan95] always starts with a lambda lifted program, and is concerned about restoring the block structure of programs, therefore he does not introduce definitions that were not in the original program in ....
....analyses, and thus the number of programs for which a first order analysis gives useful results. A transformation that at first sight seems very similar to the static argument transformation is lambda dropping [Dan95] but a closer look shows that there are major differences between what we and [Dan95] do. Dan95] always starts with a lambda lifted program, and is concerned about restoring the block structure of programs, therefore he does not introduce definitions that were not in the original program in first place, but only restores the original structure. Appel independently suggested the ....
[Article contains additional citation context not shown here]
Olivier Danvy. Lambda-dropping: transforming recursive equations into programs with block structure. Technical report DART 252, Computer Science Department, Aarhus University, Aarhus, Denmark, January 1995.
No context found.
Olivier Danvy and Ulrik P. Schultz. Lambda-dropping: Transforming recursive equations into programs with block structure. Theoretical Computer Science, 248(1-2):243--287, 2000.
No context found.
Olivier Danvy and Ulrik P. Schultz. Lambda-dropping: Transforming recursive equations into programs with block structure. Theoretical Computer Science, 248(1-2):243-287, 2000.
....readable, Similix post unfolds residual functions that are called only once. It also defines the remaining functions locally to the main residual function. By the same token, it could lambda drop the variable t, as we do in the residual programs displayed in Sections 4, 5, and 7, for readability [23]. So all in all, a specialized program is defined as a main function (an instance of match) with many locally defined and mutually recursive auxiliary functions (instances of loop pc and loop pt) each of which is called more than once. 4 The KMP instances In the KMP style of string matching, ....
Olivier Danvy and Ulrik P. Schultz. Lambda-dropping: Transforming recursive equations into programs with block structure. Theoretical Computer Science, 248(1-2):243--287, 2000.
....lexical scope, which lambda lifting eliminates. This led us to devise an inverse transformation to lambda drop recursive equations into a block structured, lexically scoped program. Lambda dropping was reported at PEPM 97 jointly with Schultz and implemented as the back end of a partial evaluator [4, 10]. In that joint work, we tried to emphasize the symmetric aspects of lambda lifting and lambdadropping: recursive equations sinking oating scope sensitive DD Let us start from a block structured program. A priori, this program contains free variables and is thus scope sensitive. To ....
....but scope insensitive, except for the names of the (ex )recursive equations, of course. We make it scope sensitive by preventing each function from passing variables whose end use is lexically visible. A simple example: Figure 1 displays the power function in ML. Many other examples exist [2, 4, 5, 6, 9, 10] but this one is simple and illustrative enough. One of its parameters is inert, i.e. it does not change through the recursive calls. The lambda lifted version carries the inert argument through each recursive call. The lambda dropped version does not, making it instead a free variable in the ....
[Article contains additional citation context not shown here]
Olivier Danvy and Ulrik Pagh Schultz. Lambda-dropping: transforming recursive equations into programs with block structure. In Charles Consel, editor, Proceedings of the ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation, pages 90-106, Amsterdam, The Netherlands, June 1997. ACM Press. Extended version available as the technical report BRICS-RS-97-6.
....form to a block structured program is done using the dominator tree of the ow graph, which corresponds exactly to block sinking. in naive SSA form in optimal SSA form Once we had realized this coincidence, it became clear how we could simplify our initial presentation of lambda dropping [17]. Speci cally, using dominator graphs simpli ed our overall presentation. It also yields a substantial improvement of lambda dropping in time complexity. 4.2 Optimizing compilers Peyton Jones, Partain, and Santos optimize programs using block oating, block sinking and parameter dropping in ....
Olivier Danvy and Ulrik Pagh Schultz. Lambda-dropping: transforming recursive equations into programs with block structure. In Charles Consel, editor, Proceedings of the ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation, pages 90-106, Amsterdam, The Netherlands, June 1997. ACM Press. Extended version available as the technical report BRICS-RS-97-6.
.... recursive equations lambda dropping ## imperative program in optimal SSA form first order block structured program from block structured program to flow graph ## Once we had realized this coincidence, it became clear how we could simplify our initial presentation of lambda dropping [17]. Specifically, using dominator graphs simplified our overall presentation. It also yields a substantial improvement of lambda dropping in time complexity. 4.2 Optimizing compilers Peyton Jones, Partain, and Santos optimize programs using block floating, block sinking and parameter dropping in ....
Olivier Danvy and Ulrik Pagh Schultz. Lambda-dropping: transforming recursive equations into programs with block structure. In Charles Consel, 51 editor, Proceedings of the ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation, pages 90--106, Amsterdam, The Netherlands, June 1997. ACM Press. Extended version available as the technical report BRICS-RS-97-6.
....of the examples presented throughout this work. CHAPTER 6. LAMBDA LIFTING VS. LAMBDA DROPPING 116 6.8 Related Work This section contains short descriptions of and references to work related to lambdadropping. It is based on part of the corresponding outline found in Danvy and Schultz paper [18]. 6.8.1 Continuation based programming Shivers optimizes a tail recursive function by promoting its CPS counterpart from being a function to being a continuation [41] For example, consider the function returning the last element of a non empty list. letrec last = x:let t = tl x in if t = nil ....
....in Section 7.2. Readers who are familiar with partial evaluation can skip this section. Section 7.3 describes why and how lambda dropping is useful with partial evaluation, and provides a few examples. Section 7.4 surveys related work. This chapter is based on part of Danvy and Schultz paper [18] that discuss partial evaluation in relation to lambda dropping. 7.2 A Quick Introduction to Partial Evaluation This section is intended as an introduction to partial evaluation for someone not familiar with this field of study. It is taken with a few modifications from Consel and Danvy s ....
Olivier Danvy and Ulrik Pagh Schultz. Lambda-dropping: transforming recursive equations into programs with block structure. In Charles Consel, editor, Proceedings of the ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation, Amsterdam, The Netherlands, June 1997. To appear.
No context found.
Danvy, O. and U. P. Schultz: 2000, `Lambda-Dropping: Transforming Recursive Equations into Programs with Block Structure'. Theoretical Computer Science. To appear. A preliminary version appeared as BRICS Report RS-99-27.
No context found.
O. Danvy and U. Schultz. Lambda-dropping: Transforming recursive equations into programs with block structure. Theoretical Computer Science, 248(1--2):243--287, 2000.
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC