Results 1 
3 of
3
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 207 (39 self)
 Add to MetaCart
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
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