Lazy Evaluation and Delimited Control
Ronald Garcia (Carnegie Mellon University), Andrew Lumsdaine (Indiana, University), Amr Sabry (Indiana University)

TL;DR
This paper explores the operational semantics of lazy evaluation through a novel abstract machine that utilizes delimited control, replacing state management with control effects, and demonstrates simulation of call-by-need in call-by-value languages.
Contribution
It introduces a new abstract machine for call-by-need lambda calculus that leverages delimited control to replace heap manipulation with control effects.
Findings
Machine evaluation is equivalent to standard-order evaluation.
Delimited control effectively replaces heap state with control stack management.
Simulation of call-by-need in call-by-value languages using delimited control is demonstrated.
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…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
