Results 1 - 10
of
17
Static and Dynamic Semantics Processing
- Proceedings of the Eighteenth Annual ACM Symposium on Principles of Programming Languages
, 1991
"... This paper presents a step forward in the use of partial evaluation for interpreting and compiling programs, as well as for automatically generating a compiler from denotational definitions of programming languages. We determine the static and dynamic semantics of a programming language, reduce the ..."
Abstract
-
Cited by 47 (25 self)
- Add to MetaCart
This paper presents a step forward in the use of partial evaluation for interpreting and compiling programs, as well as for automatically generating a compiler from denotational definitions of programming languages. We determine the static and dynamic semantics of a programming language, reduce the expressions representing the static semantics, and generate object code by instantiating the expressions representing the dynamic semantics. By processing the static semantics of the language, programs get compiled. By processing the static semantics of the partial evaluator, compilers are generated. The correctness of a compiler is guaranteed by the correctness of both the executable specification and our partial evaluator. The results reported in this paper improve on previous work in the domain of compiler generation [16, 30], and solves several open problems in the domain of partial evaluation [15]. In essence: ffl Our compilation goes beyond a mere syntax-tosemantics mapping since the ...
Tag Elimination and Jones-Optimality
"... Tag elimination is a program transformation for removing unnecessary tagging and untagging operations from automatically... ..."
Abstract
-
Cited by 20 (3 self)
- Add to MetaCart
Tag elimination is a program transformation for removing unnecessary tagging and untagging operations from automatically...
Inherited limits
- In Partial Evaluation: Practice and Theory
, 1999
"... Abstract. We study the evolution of partial evaluators over the past fifteen years from a particular perspective: The attempt to prevent structural bounds in the original programs from imposing limits on the structure of residual programs. It will often be the case that a language allows unbounded n ..."
Abstract
-
Cited by 9 (0 self)
- Add to MetaCart
Abstract. We study the evolution of partial evaluators over the past fifteen years from a particular perspective: The attempt to prevent structural bounds in the original programs from imposing limits on the structure of residual programs. It will often be the case that a language allows unbounded numbers or sizes of particular features, but each program (being finite) will only have a finite number or size of these features. If the residual programs cannot overcome the bounds given in the original program, that can be seen as a weakness in the partial evaluator, as it potentially limits the effectiveness of residual programs. We show how historical developments in partial evaluators have removed inherited limits, and suggest how this principle can be used as a guideline for further development. 1
Realistic Compilation by Partial Evaluation
- In ACM SIGPLAN ’96 Conference On Programming Language Design and Implementation
, 1996
"... Two key steps in the compilation of strict functional languages are the conversion of higher-order functions to data structures (clo- sures) and the transformation to tail-recursive style. We show how to perform both steps at once by applying first-order offline partial evaluation to a suitable inte ..."
Abstract
-
Cited by 8 (1 self)
- Add to MetaCart
Two key steps in the compilation of strict functional languages are the conversion of higher-order functions to data structures (clo- sures) and the transformation to tail-recursive style. We show how to perform both steps at once by applying first-order offline partial evaluation to a suitable interpreter. The resulting code is easy to transliterate to low-level C or native code. We have implemented the compilation to C; it yields a performance comparable to that of other modern Scheme-to-C compilers. In addition, we have integrated various optimizations such as constant propagation, higherorder removal, and arity raising simply by modifying the underlying interpreter. Purely first-order methods suffice to achieve the transformations. Our approach is an instance of semantics-directed compiler generation.
Computing in Unpredictable Environments: Semantics, Reduction Strategies, and Program Transformations
"... We study systems where deterministic computations take place in environments which may behave nondeterministically. We give a simple formalization by unions of abstract reduction systems, on which various semantics can be based in a straightforward manner. We then prove that under a simple condition ..."
Abstract
-
Cited by 4 (0 self)
- Add to MetaCart
We study systems where deterministic computations take place in environments which may behave nondeterministically. We give a simple formalization by unions of abstract reduction systems, on which various semantics can be based in a straightforward manner. We then prove that under a simple condition on the reduction systems, the following holds: reduction strategies which are cofinal for the deterministic reduction system will implement the semantics for the combined system, provided the environment behaves in a "fair" manner, and certain program transformations, such as folding and unfolding, will preserve the semantics. An application is evaluation strategies and program transformations for concurrent languages. Keywords: formal semantics, program transformations, nondeterminism, reduction systems, recursive program schemes. Submitted to CAAP'96. This work was done under the support of the ESPRIT BRA project CONFER, project no. 6454. 1 Introduction Computer programs can often be ...
A Simple Solution to Type Specialization (Extended Abstract)
- Larsen, Skyum, & Winskel (eds), Proceedings of the 25th international colloquium on automata, languages, and programming (ICALP). Lecture Notes in Computer Science
, 1998
"... BRICS Report Series RS-98-1 ISSN 0909-0878 January 1998 Copyright c fl 1998, BRICS, Department of Computer Science University of Aarhus. All rights reserved. ..."
Abstract
-
Cited by 4 (0 self)
- Add to MetaCart
BRICS Report Series RS-98-1 ISSN 0909-0878 January 1998 Copyright c fl 1998, BRICS, Department of Computer Science University of Aarhus. All rights reserved.
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.
The Translation Power of the Futamura Projections
- In Perspectives of Systems Informatics, volume 2890 of LNCS
, 2003
"... Despite practical successes with the Futamura projections, it has been an open question whether target programs produced by specializing interpreters can always be as e#cient as those produced by a translator. We show that, given a Jones-optimal program specializer with static expression reducti ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
Despite practical successes with the Futamura projections, it has been an open question whether target programs produced by specializing interpreters can always be as e#cient as those produced by a translator. We show that, given a Jones-optimal program specializer with static expression reduction, there exists for every translator an interpreter which, when specialized, can produce target programs that are at least as fast as those produced by the translator. This is not the case if the specializer is not Jones-optimal. We also examine Ershov's generating extensions, give a parameterized notion of Jones optimality, and show that there is a class of specializers that can always produce residual programs that match the size and time complexity of programs generated by an arbitrary generating extension. This is the class of generation universal specializers. We study these questions on an abstract level, independently of any particular specialization method.
First-Class Polyvariant Functions and Co-Arity Raising
"... In partial evaluation, a polyvariant function is specialized to different specialized versions, depending on the calling context. Usually, polyvariance is limited to named, top-level functions. We lift this restriction in a partial evaluator for a higher-order functional languages to obtain first-cl ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
In partial evaluation, a polyvariant function is specialized to different specialized versions, depending on the calling context. Usually, polyvariance is limited to named, top-level functions. We lift this restriction in a partial evaluator for a higher-order functional languages to obtain first-class polyvariant functions. These functions are partially static and specialize to a memoization table. Arity raising splits a partially static parameter of a function into its dynamic components. Co-arity raising is the dual to arity raising. It splits a partially static result of a function into its dynamic components. A specializer that performs co-arity raising can transform a function returning one result into a function that returns any number of results, including zero. This technique enables polyvariant functions to return partially static results. We demonstrate the use of these techniques in combination by specializing a typed interpreter for a simply-typed applied lambda calculus s...

