Path semantics

  • Adrienne Bloss
  • Paul Hudak
Part VI New Directions
Part of the Lecture Notes in Computer Science book series (LNCS, volume 298)


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.


Standard Semantic Bottom Element Lazy Evaluation Strictness Analysis Primitive Operator 
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.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    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
  2. [2]
    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
  3. [3]
    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
  4. [4]
    B. Goldberg. Multiprocessor Execution of Functional Programs. PhD thesis, Yale University, Department of Computer Science, September 1987.Google Scholar
  5. [5]
    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
  6. [6]
    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
  7. [7]
    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
  8. [8]
    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
  9. [9]
    A. Mycroft. Abstract Interpretation and Optimizing Transformations for Applicative Programs. PhD thesis, Univ. of Edinburgh, 1981.Google Scholar
  10. [10]
    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
  11. [11]
    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

Copyright information

© Springer-Verlag Berlin Heidelberg 1988

Authors and Affiliations

  • Adrienne Bloss
    • 1
  • Paul Hudak
    • 1
  1. 1.Yale UniversityNew Haven

Personalised recommendations