Strictness analysis — a practical approach
Significant improvements in performance arise if we can arrange for parallel execution of programs. The absence of side effects in functional languages allows concurrent evaluation of the program, but in lazy implementations this risks wasting work by evaluating expressions which are subsequently discarded. We discuss the use of strictness analysis to determine at compile time which parts of program evaluation can safely be carried out concurrently. We give a practical explanation of this technique, concentrating particularly on the problem of finding fixed points.
KeywordsAbstract Function Truth Table Conjunctive Normal Form Abstract Interpretation Boolean Expression
Unable to display preview. Download preview PDF.
- [Burn85]Burn G, Hankin C, and Abramsky S, "Strictness analysis of higher order functions", Dept of Computer Science, Imperial College, Lone, June 1985.Google Scholar
- [Cous77]Cousot P and Cousot R, "Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixed points", in Proc 4th ACM Symposium on Principles of Programming Languages, Los Angeles, 1977.Google Scholar
- [Hudak84]Hudak P and Kranz D, "A combinator-based compiler for a functional language", 11th Annual symposium on Principles of Programming Languages, January 1984.Google Scholar
- [Hudak85]Hudak P and Young J, "A set theoretic characterisation of function strictness", Proc Aspenas Workshop on Implementations of Functional Languages, Chalmers Inst, Goteborg, Sweden, Jan 1985.Google Scholar
- [Hugh82]Hughes RJM "Graph reduction with supercombinators", PRG-25, Programming Research Group, Oxford, June 1982.Google Scholar
- [Johns81]Johnsson T, "Detecting when call by value can be used instead of call by need", LPM MEMO 14, Department of Computer Science, Chalmers University of Technology, Sweden, October 1981.Google Scholar
- [Johns85]Johnsson T, "Lambda lifting", Proc Aspenas Workshop on Implementations of Functional Languages, Chalmers Inst, Goteborg, Sweden, Jan 1985.Google Scholar
- [Kornf79]Kornfeld W, "Combinatorially implosive algorithms", Computer Lab, MIT, 1979.Google Scholar
- [Meira84]Meira SL, "Optimised combinatoric code for applicative language implementation", Proc 6th International Symposium on Programming, Springer Verlag, 1984.Google Scholar
- [Mishr84]Mishra P and Keller RM "Static inference of properties of applicative programs", 11th Annual Symposium on Principles of Programming Languages, January 1984.Google Scholar
- [Mycr83]Mycroft A, "Abstract interpretation and optimising transformations for applicative programs", Department of Computer Science, University of Edinburgh, December 1983.Google Scholar
- [Wray85]Wray SC, "A new strictness detection algorithm", Proc Aspenas Workshop on Implementations of Functional Languages, Chalmers Inst, Goteborg, Sweden, Jan 1985.Google Scholar