Results 1  10
of
39
Explicit substitutions
, 1996
"... The λσcalculus is a refinement of the λcalculus where substitutions are manipulated explicitly. The λσcalculus provides a setting for studying the theory of substitutions, with pleasant mathematical properties. It is also a useful bridge between the classical λcalculus and concrete implementatio ..."
Abstract

Cited by 390 (11 self)
 Add to MetaCart
The λσcalculus is a refinement of the λcalculus where substitutions are manipulated explicitly. The λσcalculus provides a setting for studying the theory of substitutions, with pleasant mathematical properties. It is also a useful bridge between the classical λcalculus and concrete implementations.
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...
The Geometry of Optimal Lambda Reduction
, 1992
"... Lamping discovered an optimal graphreduction implementation of the calculus. Simultaneously, Girard invented the geometry of interaction, a mathematical foundation for operational semantics. In this paper, we connect and explain the geometry of interaction and Lamping's graphs. The geometry of int ..."
Abstract

Cited by 97 (2 self)
 Add to MetaCart
Lamping discovered an optimal graphreduction implementation of the calculus. Simultaneously, Girard invented the geometry of interaction, a mathematical foundation for operational semantics. In this paper, we connect and explain the geometry of interaction and Lamping's graphs. The geometry of interaction provides a suitable semantic basis for explaining and improving Lamping's system. On the other hand, graphs similar to Lamping's provide a concrete representation of the geometry of interaction. Together, they offer a new understanding of computation, as well as ideas for efficient and correct implementations.
Analysis and Caching of Dependencies
, 1996
"... We address the problem of dependency analysis and caching in the context of the calculus. The dependencies of a  term are (roughly) the parts of the term that contribute to the result of evaluating it. We introduce a mechanism for keeping track of dependencies, and discuss how to use these depend ..."
Abstract

Cited by 70 (6 self)
 Add to MetaCart
We address the problem of dependency analysis and caching in the context of the calculus. The dependencies of a  term are (roughly) the parts of the term that contribute to the result of evaluating it. We introduce a mechanism for keeping track of dependencies, and discuss how to use these dependencies in caching.
Implementing Typed Intermediate Languages
, 1998
"... Recent advances in compiler technology have demonstrated the benefits of using strongly typed intermediate languages to compile richly typed source languages (e.g., ML). A typepreserving compiler can use types to guide advanced optimizations and to help generate provably secure mobile code. Types, u ..."
Abstract

Cited by 61 (16 self)
 Add to MetaCart
Recent advances in compiler technology have demonstrated the benefits of using strongly typed intermediate languages to compile richly typed source languages (e.g., ML). A typepreserving compiler can use types to guide advanced optimizations and to help generate provably secure mobile code. Types, unfortunately, are very hard to represent and manipulate efficiently; a naive implementation can easily add exponential overhead to the compilation and execution of a program. This paper describes our experience with implementing the FLINT typed intermediate language in the SML/NJ production compiler. We observe that a typepreserving compiler will not scale to handle large types unless all of its typepreserving stages preserve the asymptotic time and space usage in representing and manipulating types. We present a series of novel techniques for achieving this property and give empirical evidence of their effectiveness.
Interaction Systems I: The theory of optimal reductions
 Mathematical Structures in Computer Science
, 1994
"... We introduce a new class of higher order rewriting systems, called Interaction Systems (IS's). IS's come from Lafont's (Intuitionistic) Interaction Nets [Lafont 1990] by dropping the linearity constraint. In particular, we borrow from Interaction Nets the syntactical bipartitions of operators int ..."
Abstract

Cited by 40 (6 self)
 Add to MetaCart
We introduce a new class of higher order rewriting systems, called Interaction Systems (IS's). IS's come from Lafont's (Intuitionistic) Interaction Nets [Lafont 1990] by dropping the linearity constraint. In particular, we borrow from Interaction Nets the syntactical bipartitions of operators into constructors and destructors and the principle of binary interaction. As a consequence, IS's are a subclass of Klop's Combinatory Reduction Systems [Klop 1980] where the CurryHoward analogy still "makes sense". Destructors and constructors respectively corresponds to left and right logical introduction rules, interaction is cut and reduction is cutelimination. Interaction Systems have been primarily motivated by the necessity of extending the practice of optimal evaluators for calculus [Lamping 1990, Gonthier et al. 1992a] to other computational constructs as conditionals and recursion. In this paper we focus on the theoretical aspects of optimal reductions. In particular, we ge...
Improvement in a Lazy Context: An Operational Theory for CallByNeed
 Proc. POPL'99, ACM
, 1999
"... Machine The semantics presented in this section is essentially Sestoft's \mark 1" abstract machine for laziness [Sestoft 1997]. In that paper, he proves his abstract machine 6 A. K. Moran and D. Sands h fx = Mg; x; S i ! h ; M; #x : S i (Lookup) h ; V; #x : S i ! h fx = V g; V; S i (Update) h ; ..."
Abstract

Cited by 40 (7 self)
 Add to MetaCart
Machine The semantics presented in this section is essentially Sestoft's \mark 1" abstract machine for laziness [Sestoft 1997]. In that paper, he proves his abstract machine 6 A. K. Moran and D. Sands h fx = Mg; x; S i ! h ; M; #x : S i (Lookup) h ; V; #x : S i ! h fx = V g; V; S i (Update) h ; M x; S i ! h ; M; x : S i (Unwind) h ; x:M; y : S i ! h ; M [ y = x ]; S i (Subst) h ; case M of alts ; S i ! h ; M; alts : S i (Case) h ; c j ~y; fc i ~x i N i g : S i ! h ; N j [ ~y = ~x j ]; S i (Branch) h ; let f~x = ~ Mg in N; S i ! h f~x = ~ Mg; N; S i ~x dom(;S) (Letrec) Fig. 1. The abstract machine semantics for callbyneed. semantics sound and complete with respect to Launchbury's natural semantics, and we will not repeat those proofs here. Transitions are over congurations consisting of a heap, containing bindings, the expression currently being evaluated, and a stack. The heap is a partial function from variables to terms, and denoted in an identical manner to a coll...
The CallbyNeed Lambda Calculus
 Journal of Functional Programming
, 1994
"... We present a calculus that captures the operational semantics of callbyneed. The callbyneed lambda calculus is confluent, has a notion of standard reduction, and entails the same observational equivalence relation as the callbyname calculus. The system can be formulated with or without explici ..."
Abstract

Cited by 39 (2 self)
 Add to MetaCart
We present a calculus that captures the operational semantics of callbyneed. The callbyneed lambda calculus is confluent, has a notion of standard reduction, and entails the same observational equivalence relation as the callbyname calculus. The system can be formulated with or without explicit let bindings, admits useful notions of marking and developments, and has a straightforward operational interpretation. Introduction The correspondence between callbyvalue lambda calculi and strict functional languages (such as the pure subset of Standard ML) is quite good; the correspondence between callby name lambda calculi and lazy functional languages (such as Miranda or Haskell) is not so good. Callbyname reevaluates an argument each time it is used, a prohibitive expense. Thus, many lazy languages are implemented using the callbyneed mechanism proposed by Wadsworth (1971), which overwrites an argument with its value the first time it is evaluated, avoiding the need for any s...
Cyclic Lambda Graph Rewriting
 In Proceedings, Ninth Annual IEEE Symposium on Logic in Computer Science
, 1994
"... This paper is concerned with the study of cyclic  graphs. The starting point is to treat a graph as a system of recursion equations involving terms, and to manipulate such systems in an unrestricted manner, using equational logic, just as is possible for firstorder term rewriting. Surprisingly, ..."
Abstract

Cited by 35 (2 self)
 Add to MetaCart
This paper is concerned with the study of cyclic  graphs. The starting point is to treat a graph as a system of recursion equations involving terms, and to manipulate such systems in an unrestricted manner, using equational logic, just as is possible for firstorder term rewriting. Surprisingly, now the confluence property breaks down in an essential way. Confluence can be restored by introducing a restraining mechanism on the `copying' operation. This leads to a family of graph calculi, which are inspired by the family of oecalculi (calculi with explicit substitution) . However, these concern acyclic expressions only. In this paper we are not concerned with optimality questions for acyclic reduction. We also indicate how Wadsworth's interpreter can be simulated in the graph rewrite rules that we propose. Introduction As shown in recent years, firstorder orthogonal term rewriting [8, 19] has quite pleasant confluent extensions to the case where cycles are admitted (term grap...
Optimal Derivations in Weak Lambdacalculi and in Orthogonal Terms Rewriting Systems.
, 1991
"... We introduce the new framework of Labeled Terms Rewriting Systems (T l RS), a general framework to express sharing in Term Rewriting Systems (TRS). For Orthogonal T l RS, an important subclass of T l RS, we characterize optimal derivations. This result is applied to weak calculi, showing the ..."
Abstract

Cited by 34 (0 self)
 Add to MetaCart
We introduce the new framework of Labeled Terms Rewriting Systems (T l RS), a general framework to express sharing in Term Rewriting Systems (TRS). For Orthogonal T l RS, an important subclass of T l RS, we characterize optimal derivations. This result is applied to weak calculi, showing the optimality of the lazy strategy, that is, the callbyname with sharing strategy. The result is also valid in the presence of ffi rules, as in PCF. Orthogonal T l RS is also useful as a calculus for proving syntactic properties of functional languages. 1 Compilation of the calculus Most compilers for functional languages translate their source language into some enriched calculus [17], and then, compile this intermediate language to a lowlevel language, such as mutually recursive supercombinators, as in LML [2, 10], or categorical combinators, as in CAML [4]. These lowlevel languages define different forms of weak fireduction. We now describe two of these lowlevel languages, superc...