English

Lazy Evaluation and Delimited Control

Programming Languages 2015-07-01 v3

Abstract

The call-by-need lambda calculus provides an equational framework for reasoning syntactically about lazy evaluation. This paper examines its operational characteristics. By a series of reasoning steps, we systematically unpack the standard-order reduction relation of the calculus and discover a novel abstract machine definition which, like the calculus, goes "under lambdas." We prove that machine evaluation is equivalent to standard-order evaluation. Unlike traditional abstract machines, delimited control plays a significant role in the machine's behavior. In particular, the machine replaces the manipulation of a heap using store-based effects with disciplined management of the evaluation stack using control-based effects. In short, state is replaced with control. To further articulate this observation, we present a simulation of call-by-need in a call-by-value language using delimited control operations.

Keywords

Cite

@article{arxiv.1003.5197,
  title  = {Lazy Evaluation and Delimited Control},
  author = {Ronald Garcia and Andrew Lumsdaine and Amr Sabry},
  journal= {arXiv preprint arXiv:1003.5197},
  year   = {2015}
}
R2 v1 2026-06-21T15:03:11.489Z