Results 11  20
of
23
A selfapplicable partial evaluator for the lambda calculus
 International Conference on Computer Languages
, 1990
"... This paper (essentially [12, Chapter 8]) describes partial evaluation for the lambda calculus, augmented with an explicit fixedpoint operator. The techniques used here diverge from those used in [12, Chapters 4, 5] and [11] in that they are not based on specialization of named program points. The a ..."
Abstract

Cited by 12 (3 self)
 Add to MetaCart
This paper (essentially [12, Chapter 8]) describes partial evaluation for the lambda calculus, augmented with an explicit fixedpoint operator. The techniques used here diverge from those used in [12, Chapters 4, 5] and [11] in that they are not based on specialization of named program points. The algorithm essentially leaves some operators (applications, lambdas, etc.) untouched and reduces others as standard evaluation would do it. This simple scheme is able to handle programs that rely heavily on higherorder facilities. The requirements on bindingtime analysis are formulated via a type system and an ecient bindingtime analysis via constraint solving is outlined. The partial evaluator is proven correct.
A Typedirected, Online, Partial Evaluator for a Polymorphic Language
 In Proceedings of the Symposium on Partial Evaluation and SemanticsBased Program Manipulation
, 1997
"... Recently, Olivier Danvy introduced a new, simple method for implementing powerful partial evaluators, namely typedirected partial evaluation[9]. He introduced a partial evaluator for the simplytyped lambda calculus (x2). This paper explores the possibility of using the same techniques over a lambda ..."
Abstract

Cited by 12 (3 self)
 Add to MetaCart
Recently, Olivier Danvy introduced a new, simple method for implementing powerful partial evaluators, namely typedirected partial evaluation[9]. He introduced a partial evaluator for the simplytyped lambda calculus (x2). This paper explores the possibility of using the same techniques over a lambda calculus with a richer type system. We generalize and extend Danvy's work in four ways: 1. Our system handles a much richer language than that presented by Danvy, including all of the features functional programmers have come to expect, such as polymorphism (x5), inductive datatypes (x10), and recursion (x9). 2. Our system includes a new systematic treatment of primitive operators (x7) and the propagation of residualized code (x7.1). This question has either been ignored or treated in an adhoc manner in previous work. 3. Our system handles nonclosed terms (x6). This makes typedirected partial evaluation much more practically useful, and can easily be extended to work in languages wit...
More Advice on Proving a Compiler Correct: Improve a Correct Compiler
, 1994
"... This paper is a condensed version of the author's PhD thesis [19]. Besides the compiler for the im perative language described in this paper, the thesis derives implementations of a simple functional and a simple logic programming language ..."
Abstract

Cited by 11 (1 self)
 Add to MetaCart
This paper is a condensed version of the author's PhD thesis [19]. Besides the compiler for the im perative language described in this paper, the thesis derives implementations of a simple functional and a simple logic programming language
From Proof Normalization to Compiler Generation and TypeDirected ChangeofRepresentation
, 1997
"... The main part of this thesis is a synthesis of considerations from Type Theory, Mathematical Logic/Proof Theory, and (Denotational) Semantics to perform various automatic program transformations ranging from normalization over currying and coercioninsertion to compiler derivation. At the core of o ..."
Abstract

Cited by 7 (1 self)
 Add to MetaCart
The main part of this thesis is a synthesis of considerations from Type Theory, Mathematical Logic/Proof Theory, and (Denotational) Semantics to perform various automatic program transformations ranging from normalization over currying and coercioninsertion to compiler derivation. At the core of our technique we have what has been described as "An Inverse of the Evaluation Functional for Typed calculus" [7]. It is essentially typedirected jexpansion followed by fireduction on certain terms. Quite independently of [7], jexpansion has been studied for its use in Partial Evaluation, where among other things it has been used to obtain a onepass CPStransformer [20]. It is some of the consequences of this coincidence [19] that are described in the following. Our approach will be purely syntactical and it is hoped that it marks a simplification on earlier treatments of the materiel. We have tried presenting the materiel based purely on the standard reduction properties for the simpl...
A Unified Framework for BindingTime Analysis
 Colloquium on Formal Approaches in Software Engineering (FASE '97), volume 1214 of Lect
, 1997
"... . Bindingtime analysis is a crucial part of offline partial evaluation. It is often specified as a nonstandard type system. Many typebased bindingtime analyses are reminiscent of simple type systems with additional features like recursive types. We make this connection explicit by expressing bind ..."
Abstract

Cited by 7 (3 self)
 Add to MetaCart
. Bindingtime analysis is a crucial part of offline partial evaluation. It is often specified as a nonstandard type system. Many typebased bindingtime analyses are reminiscent of simple type systems with additional features like recursive types. We make this connection explicit by expressing bindingtime analysis with annotated type systems that separate the concerns of type inference from those of bindingtime annotation. The separation enables us to explore a design space for bindingtime analysis by varying the underlying type system and the annotation strategy independently. The result is a classification of different monovariant bindingtime analyses which allows us to compare their relative power. Due to the systematic approach we uncover some novel analyses. A partial evaluator separates the computation of a source program into two or more stages [7, 20]. Using the (static) input of the first stage it transforms a source program into a specialized residual program. Application...
Correctness of a RegionBased BindingTime Analysis
 Carnegie Mellon University, Elsevier Science BV
, 1997
"... A bindingtime analysis is the first pass of an offline partial evaluator. It determines which parts of a program may be executed at specialization time. Regionbased bindingtime analysis applies to higherorder programming languages with firstclass references. The consideration of effects in the d ..."
Abstract

Cited by 6 (5 self)
 Add to MetaCart
A bindingtime analysis is the first pass of an offline partial evaluator. It determines which parts of a program may be executed at specialization time. Regionbased bindingtime analysis applies to higherorder programming languages with firstclass references. The consideration of effects in the determination of binding time properties makes it possible to have a partial evaluator perform assignments at specialization time. We present such a regionbased bindingtime analysis and prove its correctness with respect to a continuationstyle semantics for an annotated callbyvalue lambda calculus with MLstyle references. We provide a relative correctness proof that relies on the correctness of region inference and on the correctness of a bindingtime analysis for an applied lambda calculus. The main tool in the proof is a translation from terms with explicit region annotations to an extended continuationpassing storepassing style. The analysis is monovariant/monomorphic, however, ess...
Pragmatic Aspects of TypeDirected Partial Evaluation
, 1996
"... Typedirected partial evaluation stems from the residualization of static values in dynamic contexts, given their type and the type of their free variables. Its algorithm coincides with the algorithm for coercing a subtype value into a supertype value, which itself coincides with Berger and Schw ..."
Abstract

Cited by 5 (0 self)
 Add to MetaCart
Typedirected partial evaluation stems from the residualization of static values in dynamic contexts, given their type and the type of their free variables. Its algorithm coincides with the algorithm for coercing a subtype value into a supertype value, which itself coincides with Berger and Schwichtenberg's normalization algorithm for the simply typed calculus. Typedirected partial evaluation thus can be used to specialize a compiled, closed program, given its type.
Polymorphic Specialization for ML
 ACM Transactions on Programming Languages and Systems
, 2002
"... We present a novel technique for offine partial evaluation of functional languages with an MLstyle typing discipline. Our program specialization method comprises a polymorphic bindingtime analysis with polymorphic recursion. Based on the region calculus of Tofte and Talpin, we develop a bindingti ..."
Abstract

Cited by 4 (3 self)
 Add to MetaCart
We present a novel technique for offine partial evaluation of functional languages with an MLstyle typing discipline. Our program specialization method comprises a polymorphic bindingtime analysis with polymorphic recursion. Based on the region calculus of Tofte and Talpin, we develop a bindingtime analysis as a constraint analysis on top of region inference. Our insight is to regard binding times as properties of regions.
A Computational Formalization for Partial Evaluation (Extended Version)
, 1996
"... We formalize a partial evaluator for Eugenio Moggi's computational metalanguage. This formalization gives an evaluationorder independent view of bindingtime analysis and program specialization, including a proper treatment of call unfolding, and enables us to express the essence of "controlba ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
We formalize a partial evaluator for Eugenio Moggi's computational metalanguage. This formalization gives an evaluationorder independent view of bindingtime analysis and program specialization, including a proper treatment of call unfolding, and enables us to express the essence of "controlbased bindingtime improvements" for let expressions. Specifically,
Two Flavors of Offline Partial Evaluation
, 1998
"... Typedirected partial evaluation is a new approach to program specialization for functional programming languages. Its merits with respect to the traditional offline partial evaluation approach have not yet been fully explored. We present a comparison of typedirected partial evaluation with standa ..."
Abstract

Cited by 3 (0 self)
 Add to MetaCart
Typedirected partial evaluation is a new approach to program specialization for functional programming languages. Its merits with respect to the traditional offline partial evaluation approach have not yet been fully explored. We present a comparison of typedirected partial evaluation with standard offline partial evaluation in both a qualitative and quantitative way. For the latter we use implementations of both approaches in Scheme. Both approaches yield equivalent results in comparable time.