A reduction semantics for imperative higher-order languages

  • Matthias Felleisen
  • Daniel P. Friedman
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 259)


Imperative higher-order languages are a highly expressive programming medium. Compared to functional programming languages, they permit the construction of safe and modular programs. However, functional languages have a simple reduction semantics, which makes it easy to evaluate program pieces in parallel. In order to overcome this dilemma, we construct a conservative extension of the λ-calculus that can deal with control and assignment facilities. This calculus simultaneously provides an algebraic reasoning system and an elegant reduction semantics of higher-order imperative languages. We show that the evaluation of applications can still take advantage of parallelism and that the major cost of these evaluations stems from the necessary communication for substitutions. Since this is also true for functional languages, we conjecture that if a successful parallel evaluation scheme for functional languages is possible, then the same strategy will also solve the problem of parallel evaluations for imperative programming languages.


Programming Language Free Variable Transition Rule Functional Language Control String 
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.
    Backus, J. Can programming be liberated from the von Neumann style? A functional style and its algebra of programs, Comm. ACM21(8), 613–641.Google Scholar
  2. 2.
    Barendregt, H.P.The Lambda Calculus: Its Syntax and Semantics, North-Holland, Amsterdam, 1981.Google Scholar
  3. 3.
    Clinger, W.D., D.P. Friedman, M. Wand. A scheme for a higher-level semantic algebra, in Algebraic Methods in Semantics, J. Reynolds, M. Nivat (Eds.), 1985, 237–250.Google Scholar
  4. 4.
    Dennis, J.B. Programming generality, parallelism and computer architectures, Information Processing68, 1969, 484–492.Google Scholar
  5. 5.
    Felleisen, M., D.P. Friedman, B. Duba, J. Merrill. Beyond continuations, Technical Report No 216, Indiana University Computer Science Department, 1987.Google Scholar
  6. 6.
    Felleisen, M., D.P. Friedman. Control operators, the SECD-machine, and the λ-calculus, Formal Description of Programming Concepts III, North-Holland, Amsterdam, 1986, to appear.Google Scholar
  7. 7.
    Felleisen, M., D.P. Friedman. A calculus for assignments in higher-order languages, Proc. 14th ACM Symp. Principles of Programming Languages, 1987, 314–325.Google Scholar
  8. 8.
    Felleisen, M. Reflections on Landin's J-operator: a partly historical note, Computer Languages, 1987, to appear.Google Scholar
  9. 9.
    Friedman, D.P., C.T. Haynes, E. Kohlbecker. Programming with continuations, in Program Transformations and Programming Environments, P. Pepper (Ed.), Springer-Verlag, 1985, 263–274.Google Scholar
  10. 10.
    Haynes, C.T., D.P. Friedman, M. Wand. Obtaining coroutines from continuations, Computer Languages11(3/4), 1986, 143–153.CrossRefGoogle Scholar
  11. 11.
    Haynes, C. T. Logic continuations, Proc. Third International Conf. Logic Programming, London, Springer-Verlag, 1986, 671–685; also to appear in Journal of Logic Programming, 1987.Google Scholar
  12. 12.
    Henson, M.C., R. Turner. Completion semantics and interpreter generation, Proc. 9th ACM Symp. Principles of Programming Languages, 1982, 242–254.Google Scholar
  13. 13.
    Kohlbecker, E, M. Wand. Macro-by-example: deriving syntactic transformations from their specifications, Proc. 14th ACM Symp. Principles of Programming Languages, 1987, 77–85.Google Scholar
  14. 14.
    Landin, P.J. The next 700 programming languages, Comm. ACM9(3), 1966, 157–166.CrossRefGoogle Scholar
  15. 15.
    Landin, P. J. An abstract machine for designers of computing languages, Proc. IFIP Congress, 1965, 438–439.Google Scholar
  16. 16.
    Landin, P.J. The mechanical evaluation of expressions, Computer Journal6(4), 1964, 308–320.Google Scholar
  17. 17.
    Magó, G.A. A network of microprocessors to execute reduction languages, Int. Journal of Computer and Information Sciences8, 1979, 349–385; 435–471.CrossRefGoogle Scholar
  18. 18.
    Mason, I. A.The Semantics of Destructive Lisp, Ph.D. dissertation, Stanford University, 1986.Google Scholar
  19. 19.
    Plotkin, G.D. A structural approach to operational semantics, Technical Report DAIMI FN-19, Aarhus University, Computer Science Department, 1981.Google Scholar
  20. 20.
    Plotkin, G.D. Call-by-name, call-by-value, and the λ-calculus, Theoretical Computer Science1, 1975, 125–159.CrossRefGoogle Scholar
  21. 21.
    Reynolds, J.C. Definitional interpreters for higher-order programming languages, Proc. ACM Annual Conference, 1972, 717–740.Google Scholar
  22. 22.
    Reynolds, J.C. GEDANKEN—A simple typeless language based on the principle of completeness and the reference concept, Comm. ACM13(5), 1970, 308–319.CrossRefGoogle Scholar
  23. 23.
    Sussman G.J., G. Steele. Scheme: An interpreter for extended lambda calculus, Memo 349, MIT AI-Lab, 1975.Google Scholar
  24. 24.
    Talcott, C.The Essence of Rum—A Theory of the Intensional and Extensional Aspects of Lisptype Computation, Ph.D. dissertation, Stanford University, 1985.Google Scholar
  25. 25.
    Wand, M., D.P. Friedman. Compiling lambda-expressions using continuations and factorizations, Computer Languages3, 1978, 241–263.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1987

Authors and Affiliations

  • Matthias Felleisen
    • 1
  • Daniel P. Friedman
    • 1
  1. 1.Computer Science DepartmentIndiana UniversityBloomingtonUSA

Personalised recommendations