Lazy evaluation and delimited control

From MaRDI portal
Publication:5261514

DOI10.1145/1480881.1480903zbMATH Open1315.68049arXiv1003.5197OpenAlexW2051431350MaRDI QIDQ5261514FDOQ5261514


Authors: Ronald Garcia, Andrew Lumsdaine, Amr Sabry Edit this on Wikidata


Publication date: 3 July 2015

Published in: Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages (Search for Journal in Brave)

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.


Full work available at URL: https://arxiv.org/abs/1003.5197




Recommendations





Cited In (11)





This page was built for publication: Lazy evaluation and delimited control

Report a bug (only for logged in users!)Click here to report a bug for this page (MaRDI item Q5261514)