Knowledge of order of evaluation of expressions is useful for compile-time optimizations for lazy sequential functional programs. We present path semantics, a non-standard semantics that describes order of evaluation for a first-order functional language with lazy evaluation. We also provide an effective abstraction of path semantics that provides compile-time information. We show how path semantics may be used in strictness analysis, process scheduling in parallel systems, and optimized self-modifying thunks.
KeywordsStandard Semantic Bottom Element Lazy Evaluation Strictness Analysis Primitive Operator
Unable to display preview. Download preview PDF.
- A. Bloss and P. Hudak. Variations on strictness analysis. In Proc. 1986 ACM Conf. on LISP and Functional Prog., pages 132–142, ACM, August 1986.Google Scholar
- G.L. Burn, C.L. Hankin, and S. Abramsky. The theory and practice of strictness analysis for higher order functions. Technical Report DoC 85/6, Imperial College of Science and Technology, Department of Computing, April 1985.Google Scholar
- C. Clack and S.L. Peyton Jones. Strictness analysis — a practical approach. In Functional Programming Languages and Computer Architecture, pages 35–49, Springer-Verlag LNCS 201, September 1985.Google Scholar
- B. Goldberg. Multiprocessor Execution of Functional Programs. PhD thesis, Yale University, Department of Computer Science, September 1987.Google Scholar
- P. Hudak and A. Bloss. The aggregate update problem in functional programming systems. In 12th ACM Sym. on Prin. of Prog. Lang., pages 300–314, ACM, 1985.Google Scholar
- P. Hudak and J. Young. Higher-order strictness analysis for untyped lambda calculus. In 12th ACM Sym. on Prin. of Prog. Lang., pages 97–109, January 1986.Google Scholar
- T. Johnsson. 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, October 1981.Google Scholar
- N.D. Jones and S.S. Muchnick. Complexity of flow analysis, inductive assertion synthesis and a language due to Dijkstra, pages 380–393. Prentice-Hall, 1981.Google Scholar
- A. Mycroft. Abstract Interpretation and Optimizing Transformations for Applicative Programs. PhD thesis, Univ. of Edinburgh, 1981.Google Scholar
- A. Mycroft. The theory and practice of transforming call-by-need into call-by-value. In Proc. of Int. Sym. on Programming, pages 269–281, Springer-Verlag LNCS Vol. 83, 1980.Google Scholar
- J-C. Raoult and R. Sethi. The global storage needs of a subcomputation. In 11th ACM Sym. on Prin. of Prog. Lang., pages 148–157, ACM, January 1984.Google Scholar