Advertisement

LISP and Symbolic Computation

, Volume 9, Issue 1, pp 109–143 | Cite as

Strictness analysis in the Imperative Lambda Calculus

  • Jonathan Springer
  • Samuel N. Kamin
Article

Abstract

Concerns over efficiency and expressiveness of functional languages have motivated the study of languages that allow state and pure functionality to coexist peacefully. However, state-oriented features complicate the static analyses which are essential for efficient compilation of these languages. The problem is an interesting one because it combines traditional strictness analysis with the abstract storage structure analysis familiar from imperative languages. We apply the technique of abstract interpretation to perform strictness analysis in the Imperative Lambda Calculus of Swarup, Reddy, and Ireland. A basic analysis is presented, along with some extensions to handle certain evident weaknesses; proofs for these analyses are discussed in some detail.

Keywords

ILC abstract interpretation strictness analysis 

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    S. Abramsky and C. Hankin. An introduction to abstract interpretation. In S. Abramsky and C. Hankin, editors,Abstract Interpretation of Declarative Languages, pages 9–31. Ellis Horwood, London, 1987.Google Scholar
  2. 2.
    G. L. Burn, C. L. Hankin, and S. Abramsky. Strictness analysis for higher order functions.Science of Computer Programming, 7:249–278, 1986.Google Scholar
  3. 3.
    D. R. Chase, M. Wegman, and F. K. Zadeck. Analysis of pointers and structures. InProceedings of the ACM SIGPLAN '90 Conference on Programming Language Design and Implementation, pages 296–310, June 1990.Google Scholar
  4. 4.
    K. Chen and M. Odersky. A type system for a lambda calculus with assignments. Research Report YALEU/DCS/RR-963, Yale University, New Haven, CT, May 1993.Google Scholar
  5. 5.
    Jong-Deok Choi, Michael Burke, and Paul Carini. Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side effects. InConference Record of the 20th ACM Symposium on Principles of Programming Languages, pages 232–245, January 1993.Google Scholar
  6. 6.
    C. Clack and S. L. Peyton-Jones. Strictness analysis — a practical approach. InConference on Functional Programming Languages and Computer Architecture, pages 35–49, September 1985.Google Scholar
  7. 7.
    P. Cousot and R. Cousot. Abstract interpretation : A unified lattice model for static analysis of programs by construction or approximation of fixpoints. InProceedings of the 4th ACM Symposium on Principles of Programming Languages, pages 238–252, 1977.Google Scholar
  8. 8.
    A. Deutsch. On determining lifetime and aliasing of dynamically allocated data in higher-order functional specifications. InConference Record of the 17th ACM Symposium on Principles of Programming Languages, pages 157–168, January 1990.Google Scholar
  9. 9.
    P. Hudak. A semantic model of reference counting and its abstraction. In S. Abramsky and C. Hankin, editors,Abstract Interpretation of Declarative Languages, pages 45–62. Ellis Horwood Ltd., London, 1987.Google Scholar
  10. 10.
    S. Kamin and U. Reddy. Arrays in Imperative Lambda Calculus. InATABLE-92, 1992.Google Scholar
  11. 11.
    David Kranz, Richard Kelsey, Jonathan A. Rees, Paul Hudak, James Philbin, and Norman I. Adams. Orbit: an optimizing compiler for Scheme. InProceedings of the SIGPLAN '86 Symposium on Compiler Construction, pages 219–233. ACM, June 1986.Google Scholar
  12. 12.
    William Landi and Barbara Ryder. A safe approximate algorithm for interprocedural pointer aliasing. InProceedings of the SIGPLAN '92 Conference on Programming Language Design and Implementation, pages 235–248, June 1992.Google Scholar
  13. 13.
    John Launchbury. Lazy imperative programming. InProceeding of the ACM SIGPLAN Workshop on State in Programming Languages, pages 46–56, June 1993. Yale University Research Report YALEU/DCS/RR-968.Google Scholar
  14. 14.
    A. Mycroft. The theory and practice of transforming call-by-need into call-by-value. InProceedings of the 4th Intl. Symposium on Programming, pages 269–281. Springer-Verlag, LNCS 83, 1980.Google Scholar
  15. 15.
    A. MycroftAbstract Interpretation and Optimising Transformations for Applicative Programs. PhD thesis, Univ. of Edinburgh, December 1986.Google Scholar
  16. 16.
    M. Odersky, D. Rabin, and P. Hudak. Call by name, assignment, and the lambda calculus. InConference Record of the 20th ACM Symposium on Principles of Programming Languages, pages 43–56, January 1993.Google Scholar
  17. 17.
    U. S. Reddy and S. N. Kamin. On the power of abstract interpretation.Journal of Logic and Computation, 19(2):79–89, 1993.Google Scholar
  18. 18.
    V. Swarup, U. S. Reddy, and E. Ireland. Assignments for applicative languages. InProceedings of the 5th ACM Conference on Functional Programming Languages and Computer Architecture, pages 192–214, Springer-Verlag, LNCS 523, August 1991.Google Scholar

Copyright information

© Kluwer Academic Publishers 1996

Authors and Affiliations

  • Jonathan Springer
    • 1
  • Samuel N. Kamin
    • 1
  1. 1.Department of Computer ScienceUniversity of Illinois at Urbana-ChampaignUrbanaUSA

Personalised recommendations