Affiliation:
1. Rice University, Houston, TX, USA
2. Indiana University, Bloomington, IN, USA
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.
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Cited by
6 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Call-by-need effects via coeffects;Open Computer Science;2018-07-01
2. Environments and the complexity of abstract machines;Proceedings of the 19th International Symposium on Principles and Practice of Declarative Programming;2017-10-09
3. Distilling abstract machines;ACM SIGPLAN Notices;2014-11-26
4. Purely functional lazy nondeterministic programming;Journal of Functional Programming;2011-08-16
5. Inter-deriving semantic artifacts for object-oriented programming;Journal of Computer and System Sciences;2010-08