Results 1 
3 of
3
Callbyneed and Continuationpassing Style
 Lisp and Symbolic Computation
, 1993
"... . This paper examines the transformation of callbyneed terms into continuation passing style (CPS). It begins by presenting a simple transformation of callbyneed terms into program graphs and a reducer for such graphs. From this, an informal derivation is carried out, resulting in a translat ..."
Abstract

Cited by 17 (0 self)
 Add to MetaCart
. This paper examines the transformation of callbyneed terms into continuation passing style (CPS). It begins by presenting a simple transformation of callbyneed terms into program graphs and a reducer for such graphs. From this, an informal derivation is carried out, resulting in a translation from terms into selfreducing program graphs, where the graphs are represented as CPS terms involving storage operations. Though informal, the derivation proceeds in simple steps, and the resulting translation is taken to be our canonical CPS transformation for callbyneed terms. In order to define the CPS transformation more formally, two alternative presentations are given. The first takes the form of a continuation semantics for the callbyneed language. The second presentation follows Danvy and Hatcliff 's twostage decomposition of the callbyname CPS transformation, resulting in a similar twostage CPS transformation for callbyneed. Finally, a number of practical matters are...
A.: Lazy evaluation and delimited control
 In: POPL ’09: Proceedings of the 36th Annual ACM SIGPLANSIGACT Symposium on Principles of Programming Languages
, 2009
"... The callbyneed 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 standardorder reduction relation of the calculus and discover a nove ..."
Abstract

Cited by 11 (0 self)
 Add to MetaCart
The callbyneed 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 standardorder 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 standardorder 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 storebased effects with disciplined management of the evaluation stack using controlbased effects. In short, state is replaced with control. To further articulate this observation, we present a simulation of callbyneed in a callbyvalue language using delimited control operations.
\Lambda
"... In order to define the CPS transformation more formally, two alternative presentations are given. The first takes the form of a continuation semantics for the callbyneed language. The second presentation follows Danvy and Hatcliff 's twostage decomposition of the callbyname CPS transformat ..."
Abstract
 Add to MetaCart
In order to define the CPS transformation more formally, two alternative presentations are given. The first takes the form of a continuation semantics for the callbyneed language. The second presentation follows Danvy and Hatcliff 's twostage decomposition of the callbyname CPS transformation, resulting in a similar twostage CPS transformation for callbyneed. Finally, a number of practical matters are considered, including an improvement to eliminate the socalled administrative redexes, as well as to avoid unnecessary memoization and take advantage of strictness information. These improvements make it feasible to consider potential applications in compilers for callbyneed programming languages. 1. Introduction One of the trends in compiler construction has been the use of * terms written in continuationpassing style (CPS) as an intermediate representation [1, 19, 25]. Transformations into CPS for callbyname and callbyvalue languages are well known [8, 23, 24], but we are unaware of a similar transformation for languages implemented with a callbyneed evaluation strategy (also known as &quot;lazy evaluation&quot;). We find it natural to consider such a transformation. After all, one of the motivations for the use of CPS