Results 1 
5 of
5
Typedirected partial evaluation
 Proceedings of the TwentyThird Annual ACM Symposium on Principles of Programming Languages
, 1996
"... Abstract. Typedirected partial evaluation stems from the residualization of arbitrary static values in dynamic contexts, given their type. Its algorithm coincides with the one for coercing asubtype value into a supertype value, which itself coincides with the one of normalization in thecalculus. T ..."
Abstract

Cited by 217 (38 self)
 Add to MetaCart
(Show Context)
Abstract. Typedirected partial evaluation stems from the residualization of arbitrary static values in dynamic contexts, given their type. Its algorithm coincides with the one for coercing asubtype value into a supertype value, which itself coincides with the one of normalization in thecalculus. Typedirected partial evaluation is thus used to specialize compiled, closed programs, given their type. Since Similix, letinsertion is a cornerstone of partial evaluators for callbyvalue procedural programs with computational e ects. It prevents the duplication of residual computations, and more generally maintains the order of dynamic side e ects in residual programs. This article describes the extension of typedirected partial evaluation to insert residual let expressions. This extension requires the userto annotate arrowtypes with e ect information. It is achieved by delimiting and abstracting control, comparably to continuationbased specialization in direct style. It enables typedirected partial evaluation of e ectful programs (e.g.,ade nitional lambdainterpreter for an imperative language) that are in direct style. The residual programs are in Anormal form. 1
Gödelisation in the λCalculus
, 1996
"... Gödelisation is a metalinguistic encoding of terms in a language. While it is ..."
Abstract

Cited by 4 (1 self)
 Add to MetaCart
Gödelisation is a metalinguistic encoding of terms in a language. While it is
Solving Equations in the λCalculus using Syntactic Encapsulation
, 1995
"... Syntactic encapsulation is a relation between an expression and one of its subexpressions, that constraints how the given subexpression can be used throughout the reduction of the expression. In this paper, we present a class of systems of equations, in which the righthand side of each equati ..."
Abstract

Cited by 3 (0 self)
 Add to MetaCart
Syntactic encapsulation is a relation between an expression and one of its subexpressions, that constraints how the given subexpression can be used throughout the reduction of the expression. In this paper, we present a class of systems of equations, in which the righthand side of each equation is syntactically encapsulated in the lefthand side. This class is general enough to allow equations to contain selfapplication, and to allow unknowns to appear on both sides of the equation. Yet such a system is simple enough to be solvable, and for a solution (though of course not its normal form) to be obtainable in constant time.
T~peDirected Partial Evalt~ation
"... We present a strikingly simple partial evaluator, that is typedirected and reifies a compiled program into the text of a residual, specialized program. Our partial evaluator is concise (a few lines) and it handles the flagship examples of offline monovariant partial evaluation. Its source programs a ..."
Abstract
 Add to MetaCart
We present a strikingly simple partial evaluator, that is typedirected and reifies a compiled program into the text of a residual, specialized program. Our partial evaluator is concise (a few lines) and it handles the flagship examples of offline monovariant partial evaluation. Its source programs are constrained in two ways: they must be closed and monomorphic ally t ypable. Thus dynamic free variables need to be factored out in a “dynamic initial environment”. Typedirected partial evaluation uses no symbolic evaluation for specialization, and naturally processes static computational effects. Our partial evaluator is the part of an offline partial evaluator that residualizes static values in dynamic contexts. Its restriction to the simply typed lambdacalculus coincides with Berger and Schwichtenberg’s “inverse of the evaluation functiona ~ (LICS ’91), which is an instance of normalization in a logical setting. As such, typedirected partial evaluation essentially achieves lambdacalculus normalization. We extend it to produce specialized programs that are recursive and that use disjoint sums and computational effects. We also analyze its limitations: foremost, it does not handle inductive types. This paper therefore bridges partial evaluation and Jcalculus normalization through higherorder abstract syntax, and touches upon parametricity, proof theory, and type theory (including subtyping and coercions), compiler optimization, and ruttime code generation (including recompilation). It also offers a simple solution to denotational semanticsbased compilation and compiler generation. 1
An Adequate LeftAssociated Binary Numeral System in the lambdaCalculus
, 1996
"... This paper introduces a sequence of expressions modelling the binary expansion of integers. We derive expressions computing the test for zero, the successor function, and the predecessor function, thereby showing the sequence to be an adequate numeral system. These functions can be computed eff ..."
Abstract
 Add to MetaCart
This paper introduces a sequence of expressions modelling the binary expansion of integers. We derive expressions computing the test for zero, the successor function, and the predecessor function, thereby showing the sequence to be an adequate numeral system. These functions can be computed efficiently. Their complexity is independent of the order of evaluation.