Advertisement

Projections for strictness analysis

  • Philip Wadler
  • R. J. M. Hughes
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 274)

Abstract

Contexts have been proposed as a means of performing strictness analysis on non-flat domains. Roughly speaking, a context describes how much a sub-expression will be evaluated by the surrounding program. This paper shows how contexts can be represented using the notion of projection from domain theory. This is clearer than the previous explanation of contexts in terms of continuations. In addition, this paper describes finite domains of contexts over the non-flat list domain. This means that recursive context equations can be solved using standard fixpoint techniques, instead of the algebraic manipulation previously used.

Keywords

Abstract Interpretation Context Analysis Finite Domain Functional Language Denotational Semantic 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

References

  1. [Abr85]
    S. Abramsky. Strictness analysis and polymorphic invariance. In N. Jones and H. Ganzinger, editors, Workshop on Programs as Data Objects, Springer-Verlag, Copenhagen, October 1985. LNCS 217.Google Scholar
  2. [AH87]
    S. Abramsky and C. Hankin. Abstract Interpretation of Declarative Languages. Ellis Horwood, 1987.Google Scholar
  3. [Aug84]
    L. Augustsson. A compiler for lazy ML. In ACM Symposium on Lisp and Functional Programming, pages 218–227, Austin, 1984.Google Scholar
  4. [BHA85]
    G.L. Burn, C.L. Hankin, and S. Abramsky. The theory of strictness analysis for higherorder functions. In N. Jones and H. Ganzinger, editors, Workshop on Programs as Data Objects, Springer-Verlag, Copenhagen, October 1985. LNCS 217.Google Scholar
  5. [Bje87]
    B. Bjerner. Complexity analysis of Programs in type theory. Programming Methodology Group, Chalmers University of Technology, Göteborg, Sweden, 1987.Google Scholar
  6. [Bur87]
    G. L. Burn. Evaluation transformers—a model for the parallel evaluation of functional languages. In Conference on Functional Programming Languages and Computer Architecture, Portland, Oregon, September 1987.Google Scholar
  7. [CP85]
    C. Clack and S. L. Peyton-Jones. Strictness analysis—a practical approach. In Conference on Functional Programming Languages and Computer Architecture, Nancy, France, 1985.Google Scholar
  8. [Dyb87]
    P. Dybjer. Computing inverse images. In International Conference on Automata, Languages, and Programming, 1987.Google Scholar
  9. [FW86]
    J. Fairbairn and S. C. Wray. Code generation techniques for functional languages. In ACM Symposium on Lisp and Functional Programming, pages 94–104, Boston, 1986.Google Scholar
  10. [HB85]
    P. Hudak and A. Bloss. The aggregate update problem in functional programming systems. In 12'th ACM Symposium on Principles of Programming Languages, pages 300–314, January 1985.Google Scholar
  11. [Hug84]
    R. J. M. Hughes. Why functional programming matters. Technical Report, Programming Methodology Group, Chalmers University of Technology, Göteborg, Sweden, 1984.Google Scholar
  12. [Hug85]
    R. J. M. Hughes. Strictness detection in non-flat domains. In N. Jones and H. Ganzinger, editors, Workshop on Programs as Data Objects, Springer-Verlag, Copenhagen, October 1985. LNCS 217.Google Scholar
  13. [Hug87a]
    R. J. M. Hughes. Analysing strictness by abstract interpretation of continuations. In S. Abramsky and C. Hankin, editors, Abstract Interpretation of Declarative Languages, Ellis Horwood, 1987, to appear.Google Scholar
  14. [Hug87b]
    R. J. M. Hughes. Backwards analysis of functional programs. University of Glasgow research report CSC/87/R3, March 1987.Google Scholar
  15. [HW87]
    C. V. Hall and D. S. Wise. Compiling strictness into streams. In 14'th ACM Symposium on Principles of Programming Languages, pages 132–143, Munich, January 1987.Google Scholar
  16. [HY85]
    P. Hudak and J. Young. Higher order strictness analysis in untyped lambda calculus. In 12'th ACM Symposium on Principles of Programming Languages, pages 97–109, January 1985.Google Scholar
  17. [Joh84]
    T. Johnsson. Efficient compilation of lazy evaluation. In ACM Symposium on Compiler Construction, 1984.Google Scholar
  18. [Joh87]
    T. Johnsson. Attribute grammars as a paradigm for functional programming. Programming Methodology Group, Chalmers University of Technology, Göteborg, Sweden, 1987.Google Scholar
  19. [Myc81]
    A. Mycroft. Abstract interpretation and optimising transformations for applicative programs. PhD thesis, University of Edinburgh, 1981.Google Scholar
  20. [PC87]
    S. L. Peyton-Jones and C. Clack. Finding fixpoints in abstract interpretation. In S. Abramsky and C. Hankin, editors, Abstract Interpretation of Declarative Languages, Ellis Horwood, 1987.Google Scholar
  21. [Pey87]
    S. L. Peyton-Jones. Implementing Functional Languages using Graph Reduction. Prentice-Hall, 1987.Google Scholar
  22. [Sch86]
    D. A. Schmidt. Denotational Semantics: A Methodology for Language Development. Allyn and Bacon, Newton, Massachusetts, 1986.Google Scholar
  23. [Sco81]
    D. S. Scott. Lectures on a mathematical theory of computation. Technical Report PRG-19, Oxford University Programming Research Group, May 1981.Google Scholar
  24. [Sco82]
    D. S. Scott. Domains for denotational semantics. In Conference on Automata, Languages and Programming, pages 577–613, Springer-Verlag, July 1982. LNCS 140.Google Scholar
  25. [Sto77]
    J. E. Stoy. Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory. MIT Press, Cambridge, Massachusetts, 1977.Google Scholar
  26. [Wad85a]
    P. L. Wadler. How to replace failure by a list of successes. In Conference on Functional Programming Languages and Computer Architecture, Nancy, France, 1985.Google Scholar
  27. [Wad85b]
    P. L. Wadler. Listlessness is better than laziness II: composing listless functions. In N. Jones and H. Ganzinger, editors, Workshop on Programs as Data Objects, Springer-Verlag, Copenhagen, October 1985, LNCS 217.Google Scholar
  28. [Wad87]
    P. L. Wadler. Strictness analysis on non-flat domains (by abstract interpretation over finite domains). In S. Abramsky and C. Hankin, editors, Abstract Interpretation of Declarative Languages, Ellis Horwood, 1987, to appear.Google Scholar
  29. [Wra86]
    S. C. Wray. Implementation and Programming Techniques for Functional Languages. PhD thesis, University of Cambridge, January 1986.Google Scholar
  30. [YH86]
    J. Young and P. Hudak. Finding fixpoints on function spaces. Technical Report YALEU/DCS/RR-505, Yale University Dept. of Computer Science, December 1986.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1987

Authors and Affiliations

  • Philip Wadler
    • 1
    • 2
  • R. J. M. Hughes
    • 3
  1. 1.Programming Research GroupOxford UniversityUK
  2. 2.Programming Methodology GroupChalmers UniversityGöteborg
  3. 3.Department of Computer ScienceUniversity of GlasgowUK

Personalised recommendations