Results 1 
4 of
4
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
Encoding types in MLlike languages
, 1998
"... A HindleyMilner type system such as ML's seems to prohibit typeindexed values, i.e., functions that map a family of types to a family of values. Such functions generally perform case analysis on the input types and return values of possibly different types. The goal of our work is to demonstrate h ..."
Abstract

Cited by 42 (0 self)
 Add to MetaCart
A HindleyMilner type system such as ML's seems to prohibit typeindexed values, i.e., functions that map a family of types to a family of values. Such functions generally perform case analysis on the input types and return values of possibly different types. The goal of our work is to demonstrate how to program with typeindexed values within a HindleyMilner type system. Our first approach is to interpret an input type as its corresponding value, recursively. This solution is typesafe, in the sense that the ML type system statically prevents any mismatch between the input type and function arguments that depend on this type. Such specific type interpretations, however, prevent us from combining different typeindexed values that share the same type. To meet this objection, we focus on finding a valueindependent type encoding that can be shared by different functions. We propose and compare two solutions. One requires firstclass and higherorder polymorphism, and, thus, is not implementable in the core language of ML, but it can be programmed using higherorder functors in Standard ML of New Jersey. Its usage, however, is clumsy. The other approach uses embedding/projection functions. It appears to be more practical. We demonstrate the usefulness of typeindexed values through examples including typedirected partial evaluation, C printflike formatting, and subtype coercions. Finally, we discuss the tradeoffs between our approach and some other solutions based on more expressive typing disciplines.
Language Support for Program Generation: Reasoning, Implementation, and Applications
 Computer Science Department, New York University
, 2001
"... iii Acknowledgment My graduate study and life, of which this dissertation is one of the outcomes, benefitted greatly from the time, energy, and enthusiasm of many people. ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
iii Acknowledgment My graduate study and life, of which this dissertation is one of the outcomes, benefitted greatly from the time, energy, and enthusiasm of many people.
TypeFree CurryHoward Isomorphisms (A ProofTheory Inspired Exposition of the Isomorphism between the Untyped Calculus with Variable Names and à la de Bruijn)
"... We give an alternative, prooftheory inspired proof of the wellknown result that the untyped calculus presented with variable names and `a la de Bruijn are isomorphic. The two presentations of the calculus come about from two isomorphic logic formalisations by observing that, for the logic in ..."
Abstract
 Add to MetaCart
We give an alternative, prooftheory inspired proof of the wellknown result that the untyped calculus presented with variable names and `a la de Bruijn are isomorphic. The two presentations of the calculus come about from two isomorphic logic formalisations by observing that, for the logic in question, the CurryHoward correspondence is formulaindependent. We identify the exchange rule as the the prooftheoretical difference between the two representations of the systems. 1 Introduction The CurryHoward correspondence relates formal inference systems of symbolic logic to typed like calculi. An inference system for formal, symbolic logic is said to be in Hilbertstyle if, 1 no logical rule (i.e., excluding cut, weakening, etc.) change the set of assumptions. Such systems are also referred to as combinatory logics, in that they typically consist of a set of tautologies (or combinators) which are combined by the, socalled, Modus Ponens rule: A ! B A (Modus Ponens) B For...