|
ABSTRACT
A function is said to be <i>strict</i> in one of its formal parameters if, in all calls to the function, either the corresponding actual parameter is evaluated, or the call does not terminate. Detecting which arguments a function will surely evaluate is a problem that arises often in program transformation and compiler optimization. We present a strategy that allows one to infer strictness properties of functions expressed in the lambda calculus. Our analysis improves on previous work in that (1) a set-theoretic characterization of strictness is used that permits treatment of <i>free variables,</i> which in turn permits a broader range of interpretations, and (2) the analysis provides an effective treatment of higher-order functions. We also prove a result due to Meyer [15]: the problem of first-order strictness analysis is complete in deterministic exponential time. However, because the size of most functions is small, the complexity seems to be tractable in practice.This research was supported in part by NSF Grant MCS-8302018, and a Faculty Development Award from IBM.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
|
| |
2
|
Burn, G. L., Hankin, C. L., and Abramsky, S. The theory and practice of strictness analysis for higher order functions. DoC 85/6, Imperial College of Science and Technology, Department of Computing, April, 1985.
|
 |
3
|
|
| |
4
|
|
 |
5
|
|
 |
6
|
|
| |
7
|
|
| |
8
|
Hudak, P. ALFL Reference Manual and Programmers Guide. Research Report YALEU/DCS/RR-322, Second Edition, Yale University, Oct., 1984.
|
 |
9
|
|
| |
10
|
Hudak, P. and Goldberg, B. Distributed execution of functional programs using serial combinators. Proceedings of 1985 Int'l Conf. on Parallel Proc. (and IEEE Trans. on Computers October 1985), Aug., 1985, pp. 831--839.
|
| |
11
|
|
| |
12
|
Hudak, P. and Young, J. A set-theoretic characterization of function strictness in the Lambda Calculus. Research Report YALEU/DCS/RR-391, Yale University, June, 1985.
|
| |
13
|
Johnsson, T. Detecting when call-by-value can be used instead of call-by-need. Laboratory for Programming Methodology Memo 14, Chalmers University of Technology, Dept. of Computer Science, Oct., 1981.
|
| |
14
|
Keller, R. M. FEL programmer's guide. AMPS TR 7, University of Utah, March, 1982.
|
| |
15
|
Meyer, A. R. Complexity of program flow-analysis for strictness.
|
| |
16
|
|
| |
17
|
Mycroft, A. <i>Abstract Interpretation and Optimizing Transformations for Applicative Programs.</i> Ph.D. Th., Univ. of Edinburgh, 1981.
|
| |
18
|
Turner, D. A. SASL language manual University of St. Andrews, 1976.
|
CITED BY 31
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
R. C. Sekar , Prateek Mishra , I. V. Ramakrishnan, On the power and limitation of strictness analysis based on abstract interpretation, Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.37-48, January 21-23, 1991, Orlando, Florida, United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Paul Hudak , John Hughes , Simon Peyton Jones , Philip Wadler, A history of Haskell: being lazy with class, Proceedings of the third ACM SIGPLAN conference on History of programming languages, p.12-1-12-55, June 09-10, 2007, San Diego, California
|
|