A call-by-need lambda calculus

  • Authors:
  • Zena M. Ariola;John Maraist;Martin Odersky;Matthias Felleisen;Philip Wadler

  • Affiliations:
  • Computer & Information Science Department, University of Oregon, Eugene, Oregon;Institut für Programmstrukturen, Universität Karlsruhe, Karlsruhe, Germany;Institut für Programmstrukturen, Universität Karlsruhe, Karlsruhe, Germany;Department of Computer Science, Rice University, Houston, Texas;Department of Computing Science, University of Glasgow, Glasgow, Scotland

  • Venue:
  • POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
  • Year:
  • 1995

Quantified Score

Hi-index 0.01

Visualization

Abstract

The mismatch between the operational semantics of the lambda calculus and the actual behavior of implementations is a major obstacle for compiler writers. They cannot explain the behavior of their evaluator in terms of source level syntax, and they cannot easily compare distinct implementations of different lazy strategies. In this paper we derive an equational characterization of call-by-need and prove it correct with respect to the original lambda calculus. The theory is a strictly smaller theory than the lambda calculus. Immediate applications of the theory concern the correctness proofs of a number of implementation strategies, e.g., the call-by-need continuation passing transformation and the realization of sharing via assignments.