Lightweight closure conversion
- 1 January 1997
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Programming Languages and Systems
- Vol. 19 (1) , 48-86
- https://doi.org/10.1145/239912.239915
Abstract
We consider the problem of lightweight closure conversion, in which multiple procedure call protocols may coexist in the same code. A lightweight closure omits bindings for some of the free variables of the procedure that is represents. Flow analysis is used to match the protocol expected by each procedure and the protocol used at its possible call sites. We formulate the flow analysis as a deductive system that generates a labeled transition system and a set of constraints. We show that any solution to the constraints justifies the resulting transformation. Some of the techniques used are similar to those of abstract interpretation, but others appear to be novel.Keywords
This publication has 12 references indexed in Scilit:
- Safety Analysis versus Type InferenceInformation and Computation, 1995
- Selective thunkificationPublished by Springer Nature ,1994
- Specifying the correctness of binding-time analysisJournal of Functional Programming, 1993
- Correctness of procedure representations in higher-order assembly languagePublished by Springer Nature ,1992
- Automatic autoprojection of higher order recursive equationsScience of Computer Programming, 1991
- Compilation of functional languages by program transformationACM Transactions on Programming Languages and Systems, 1991
- Program transformations in a denotational settingACM Transactions on Programming Languages and Systems, 1985
- Call-by-name, call-by-value and the λ-calculusTheoretical Computer Science, 1975
- An axiomatic basis for computer programmingCommunications of the ACM, 1969
- The Mechanical Evaluation of ExpressionsThe Computer Journal, 1964