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.
Chapter PDF
Similar content being viewed by others
Keywords
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
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.
S. Abramsky and C. Hankin. Abstract Interpretation of Declarative Languages. Ellis Horwood, 1987.
L. Augustsson. A compiler for lazy ML. In ACM Symposium on Lisp and Functional Programming, pages 218–227, Austin, 1984.
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.
B. Bjerner. Complexity analysis of Programs in type theory. Programming Methodology Group, Chalmers University of Technology, Göteborg, Sweden, 1987.
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.
C. Clack and S. L. Peyton-Jones. Strictness analysis—a practical approach. In Conference on Functional Programming Languages and Computer Architecture, Nancy, France, 1985.
P. Dybjer. Computing inverse images. In International Conference on Automata, Languages, and Programming, 1987.
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.
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.
R. J. M. Hughes. Why functional programming matters. Technical Report, Programming Methodology Group, Chalmers University of Technology, Göteborg, Sweden, 1984.
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.
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.
R. J. M. Hughes. Backwards analysis of functional programs. University of Glasgow research report CSC/87/R3, March 1987.
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.
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.
T. Johnsson. Efficient compilation of lazy evaluation. In ACM Symposium on Compiler Construction, 1984.
T. Johnsson. Attribute grammars as a paradigm for functional programming. Programming Methodology Group, Chalmers University of Technology, Göteborg, Sweden, 1987.
A. Mycroft. Abstract interpretation and optimising transformations for applicative programs. PhD thesis, University of Edinburgh, 1981.
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.
S. L. Peyton-Jones. Implementing Functional Languages using Graph Reduction. Prentice-Hall, 1987.
D. A. Schmidt. Denotational Semantics: A Methodology for Language Development. Allyn and Bacon, Newton, Massachusetts, 1986.
D. S. Scott. Lectures on a mathematical theory of computation. Technical Report PRG-19, Oxford University Programming Research Group, May 1981.
D. S. Scott. Domains for denotational semantics. In Conference on Automata, Languages and Programming, pages 577–613, Springer-Verlag, July 1982. LNCS 140.
J. E. Stoy. Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory. MIT Press, Cambridge, Massachusetts, 1977.
P. L. Wadler. How to replace failure by a list of successes. In Conference on Functional Programming Languages and Computer Architecture, Nancy, France, 1985.
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.
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.
S. C. Wray. Implementation and Programming Techniques for Functional Languages. PhD thesis, University of Cambridge, January 1986.
J. Young and P. Hudak. Finding fixpoints on function spaces. Technical Report YALEU/DCS/RR-505, Yale University Dept. of Computer Science, December 1986.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1987 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Wadler, P., Hughes, R.J.M. (1987). Projections for strictness analysis. In: Kahn, G. (eds) Functional Programming Languages and Computer Architecture. FPCA 1987. Lecture Notes in Computer Science, vol 274. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-18317-5_21
Download citation
DOI: https://doi.org/10.1007/3-540-18317-5_21
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-18317-4
Online ISBN: 978-3-540-47879-9
eBook Packages: Springer Book Archive