Results 1  10
of
17
ParameterPassing and the Lambda Calculus
, 1991
"... The choice of a parameterpassing technique is an important decision in the design of a highlevel programming language. To clarify some of the semantic aspects of the decision, we develop, analyze, and compare modifications of the calculus for the most common parameterpassing techniques, i.e., ca ..."
Abstract

Cited by 186 (23 self)
 Add to MetaCart
The choice of a parameterpassing technique is an important decision in the design of a highlevel programming language. To clarify some of the semantic aspects of the decision, we develop, analyze, and compare modifications of the calculus for the most common parameterpassing techniques, i.e., callbyvalue and callbyname combined with passbyworth and passby reference, respectively. More specifically, for each parameterpassing technique we provide 1. a program rewriting semantics for a language with sideeffects and firstclass procedures based on the respective parameterpassing technique; 2. an equational theory that is derived from the rewriting semantics in a uniform manner; 3. a formal analysis of the correspondence between the calculus and the semantics; and 4. a strong normalization theorem for the imperative fragment of the theory (when applicable). A comparison of the various systems reveals that Algol's callbyname indeed satisfies the wellknown fi rule of the orig...
A Generic Account of ContinuationPassing Styles
 Proceedings of the Twentyfirst Annual ACM Symposium on Principles of Programming Languages
, 1994
"... We unify previous work on the continuationpassing style (CPS) transformations in a generic framework based on Moggi's computational metalanguage. This framework is used to obtain CPS transformations for a variety of evaluation strategies and to characterize the corresponding administrative reducti ..."
Abstract

Cited by 87 (34 self)
 Add to MetaCart
We unify previous work on the continuationpassing style (CPS) transformations in a generic framework based on Moggi's computational metalanguage. This framework is used to obtain CPS transformations for a variety of evaluation strategies and to characterize the corresponding administrative reductions and inverse transformations. We establish generic formal connections between operational semantics and equational theories. Formal properties of transformations for specific evaluation orders follow as corollaries. Essentially, we factor transformations through Moggi's computational metalanguage. Mapping terms into the metalanguage captures computational properties (e.g., partiality, strictness) and evaluation order explicitly in both the term and the type structure of the metalanguage. The CPS transformation is then obtained by applying a generic transformation from terms and types in the metalanguage to CPS terms and types, based on a typed term representation of the continuation ...
Thunks and the λcalculus
 IN THE JOURNAL OF FUNCTIONAL PROGRAMMING. RS976 OLIVIER DANVY AND ULRIK
, 1997
"... Plotkin, in his seminal article Callbyname, callbyvalue and the λcalculus, formalized evaluation strategies and simulations using operational semantics and continuations. In particular, he showed how callbyname evaluation could be simulated under callbyvalue evaluation and vice versa. Si ..."
Abstract

Cited by 21 (9 self)
 Add to MetaCart
Plotkin, in his seminal article Callbyname, callbyvalue and the λcalculus, formalized evaluation strategies and simulations using operational semantics and continuations. In particular, he showed how callbyname evaluation could be simulated under callbyvalue evaluation and vice versa. Since Algol 60, however, callbyname is both implemented and simulated with thunks rather than with continuations. We recast
The Formal Relationship Between Direct and ContinuationPassing Style Optimizing Compilers: A Synthesis of Two Paradigms
, 1994
"... Compilers for higherorder programming languages like Scheme, ML, and Lisp can be broadly characterized as either "direct compilers" or "continuationpassing style (CPS) compilers", depending on their main intermediate representation. Our central result is a precise correspondence between the two co ..."
Abstract

Cited by 15 (0 self)
 Add to MetaCart
Compilers for higherorder programming languages like Scheme, ML, and Lisp can be broadly characterized as either "direct compilers" or "continuationpassing style (CPS) compilers", depending on their main intermediate representation. Our central result is a precise correspondence between the two compilation strategies. Starting from
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.
HigherOrder Rewriting and Partial Evaluation
 REWRITING TECHNIQUES AND APPLICATIONS, LECTURE NOTES IN COMPUTER SCIENCE
, 1998
"... We demonstrate the usefulness of higherorder rewriting techniques for specializing programs, i.e., for partial evaluation. More precisely, we demonstrate how casting program specializers as combinatory reduction systems (CRSs) makes it possible to formalize the corresponding program transformat ..."
Abstract

Cited by 6 (4 self)
 Add to MetaCart
We demonstrate the usefulness of higherorder rewriting techniques for specializing programs, i.e., for partial evaluation. More precisely, we demonstrate how casting program specializers as combinatory reduction systems (CRSs) makes it possible to formalize the corresponding program transformations as metareductions, i.e., reductions in the internal "substitution calculus." For partialevaluation problems, this means that instead of having to prove on a casebycase basis that one's "twolevel functions" operate properly, one can concisely formalize them as a combinatory reduction system and obtain as a corollary that static reduction does not go wrong and yields a wellformed residual program.
Reflections on Reflections
, 1997
"... In the functional programming literature, compiling is often expressed as a translation between source and target program calculi. In recent work, Sabry and Wadler proposed the notion of a reflection as a basis for relating the source and target calculi. A reflection elegantly describes the situati ..."
Abstract

Cited by 5 (1 self)
 Add to MetaCart
In the functional programming literature, compiling is often expressed as a translation between source and target program calculi. In recent work, Sabry and Wadler proposed the notion of a reflection as a basis for relating the source and target calculi. A reflection elegantly describes the situation where there is a kernel of the source language that is isomorphic to the target language. However, we believe that the reflection criteria is so strong that it often excludes the usual situation in compiling where one is compiling from a higherlevel to a lowerlevel language. We give a detailed analysis of several translations commonly used in compiling that fail to be reflections. We conclude that, in addition to the notion of reflection, there are several relations weaker a reflection that are useful for characterizing translations. We show that several familiar translations (that are not naturally reflections) form what we call a reduction correspondence. We introduce the more genera...
Classical Callbyneed and duality
"... Abstract. We study callbyneed from the point of view of the duality between callbyname and callbyvalue. We develop sequentcalculus style versions of callbyneed both in the minimal and classical case. As a result, we obtain a natural extension of callbyneed with control operators. This lea ..."
Abstract

Cited by 4 (4 self)
 Add to MetaCart
Abstract. We study callbyneed from the point of view of the duality between callbyname and callbyvalue. We develop sequentcalculus style versions of callbyneed both in the minimal and classical case. As a result, we obtain a natural extension of callbyneed with control operators. This leads us to introduce a callbyneed λµcalculus. Finally, by using the dualities principles of λµ˜µcalculus, we show the existence of a new callbyneed calculus, which is distinct from callbyname, callbyvalue and usual callbyneed theories. 1
Separating Weakening and Contraction in a Linear Lambda Calculus
 in: Proc. CATS'98, Computing: the Fourth Australian Theory Symposium (Perth
, 1996
"... . We present a separatedlinear lambda calculus of resource consumption based on a refinement of linear logic which allows separate control of weakening and contraction. The calculus satisfies subject reduction and confluence, and inherits previous results on the relationship of Girard's two transla ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
. We present a separatedlinear lambda calculus of resource consumption based on a refinement of linear logic which allows separate control of weakening and contraction. The calculus satisfies subject reduction and confluence, and inherits previous results on the relationship of Girard's two translations from minimal intuitionistic logic to linear logic with callbyname and callbyvalue. We construct a hybrid translation from Girard's two which is sound and complete for mapping types and reduction sequences from callbyneed into separatedlinear . This treatment of callbyneed is more satisfying than in previous work, allowing a contrasting of all three reduction strategies in the manner (for example) that the CPS translations allow for callbyname and callbyvalue. H OW can we explain the differences between parameterpassing styles? With the continuationpassing style (CPS) transforms [24, 25], one makes the flow of control explicit. Each parameterpassing style is associated ...