Results 1 
7 of
7
Two for the Price of One: Composing Partial Evaluation and Compilation
, 1997
"... One of the flagship applications of partial evaluation is compilation and compiler generation. However, partial evaluation is usually expressed as a sourcetosource transformation for highlevel languages, whereas realistic compilers produce object code. We close this gap by composing a partial eva ..."
Abstract

Cited by 21 (3 self)
 Add to MetaCart
One of the flagship applications of partial evaluation is compilation and compiler generation. However, partial evaluation is usually expressed as a sourcetosource transformation for highlevel languages, whereas realistic compilers produce object code. We close this gap by composing a partial evaluator with a compiler by automatic means. Our work is a successful application of several metacomputation techniques to build the system, both in theory and in practice. The composition is an application of deforestation or fusion. The result is a runtime code generation system built from existing components. Its applications are numerous. For example, it allows the language designer to perform interpreterbased experiments with a sourcetosource version of the partial evaluator before building a realistic compiler which generates object code automatically.
Declarative Program Transformation: a Deforestation casestudy
, 1999
"... Software engineering has to reconcile modularity with e ciency. One way to grapple with this dilemma is to automatically transform a modularspecied program into an ecientimplementable one. ..."
Abstract

Cited by 15 (2 self)
 Add to MetaCart
Software engineering has to reconcile modularity with e ciency. One way to grapple with this dilemma is to automatically transform a modularspecied program into an ecientimplementable one.
Eliminating dead code on recursive data
 Science of Computer Programming
, 1999
"... Abstract. This paper describes a general and powerful method for dead code analysis and elimination in the presence of recursive data constructions. We represent partially dead recursive data using liveness patterns based on general regular tree grammars extended with the notion of live and dead, an ..."
Abstract

Cited by 14 (4 self)
 Add to MetaCart
Abstract. This paper describes a general and powerful method for dead code analysis and elimination in the presence of recursive data constructions. We represent partially dead recursive data using liveness patterns based on general regular tree grammars extended with the notion of live and dead, and we formulate the analysis as computing liveness patterns at all program points based on program semantics. This analysis yields a most precise liveness pattern for the data at each program point, which is signi cantly more precise than results from previous methods. The analysis algorithm takes cubic time in terms of the size of the program in the worst case but is very e cient in practice, as shown by our prototype implementation. The analysis results are used to identify and eliminate dead code. The general framework for representing and analyzing properties of recursive data structures using general regular tree grammars applies to other analyses as well. 1
A Constraintbased Partial Evaluator for Functional Logic Programs and its Application
, 1998
"... The aim of this work is the development and application of a partial evaluation procedure for rewritingbased functional logic programs. Functional logic programming languages unite the two main declarative programming paradigms. The rewritingbased computational model extends traditional functional ..."
Abstract

Cited by 12 (0 self)
 Add to MetaCart
The aim of this work is the development and application of a partial evaluation procedure for rewritingbased functional logic programs. Functional logic programming languages unite the two main declarative programming paradigms. The rewritingbased computational model extends traditional functional programming languages by incorporating logical features, including logical variables and builtin search, into its framework. This work is the first to address the automatic specialisation of these functional logic programs. In particular, a theoretical framework for the partial evaluation of rewritingbased functional logic programs is defined and its correctness is established. Then, an algorithm is formalised which incorporates the theoretical framework for the procedure in a fully automatic technique. Constraint solving is used to represent additional information about the terms encountered during the transformation in order to improve the efficiency and size of the residual programs. ...
Constraints to Stop HigherOrder Deforestation
 In 24th ACM Symposium on Principles of Programming Languages
, 1997
"... Wadler's deforestation algorithm eliminates intermediate data structures from functional programs. To be suitable for inclusion in a compiler, it must terminate on all programs. Several techniques to ensure termination of deforestation on all firstorder programs are known, but a technique for highe ..."
Abstract

Cited by 12 (1 self)
 Add to MetaCart
Wadler's deforestation algorithm eliminates intermediate data structures from functional programs. To be suitable for inclusion in a compiler, it must terminate on all programs. Several techniques to ensure termination of deforestation on all firstorder programs are known, but a technique for higherorder programs was only recently introduced by Hamilton, and elaborated and implemented in the Glasgow Haskell compiler by Marlow. We introduce a new technique for ensuring termination of deforestation on all higherorder programs that allows useful transformation steps prohibited in Hamilton's and Marlowe's techniques. 1 Introduction Lazy, higherorder, functional programming languages lend themselves to a certain style of programming which uses intermediate data structures [28]. Example 1 Consider the following program. letrec a = x; y:case x of [] ! y (h : t) ! h : a t y in u; v; w: a (a u v) w The term u; v; w:a (a u v) w appends the three lists u, v, and w. Appending u and v ...
A Modal µCalculus for Durational Transition Systems
 IN ELEVENTH ANNUAL IEEE SYMPOSIUM ON LOGIC IN COMPUTER SCIENCE, IEEE COMPUTER
, 1996
"... Durational transition systems are finite transition systems where every transition is additionally equipped with a duration. We consider the problem of interpreting µformulas over durational transition systems. In case the formula contains only operations minimum, maximum, addition, and sequencing ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
Durational transition systems are finite transition systems where every transition is additionally equipped with a duration. We consider the problem of interpreting µformulas over durational transition systems. In case the formula contains only operations minimum, maximum, addition, and sequencing, we show that the interpretation is not only computable but (up to a linear factor) as efficiently computable as the interpretation of µformulas over ordinary finite transition systems.
On Understanding Partial Execution
, 1999
"... In wanting to improve program speed one idea is to generalize the concept of executing a program in a context to the concept of executing a program in a partial context. The result of such a execution is a new program that when executed in a context matching the partial context will behave as the or ..."
Abstract
 Add to MetaCart
In wanting to improve program speed one idea is to generalize the concept of executing a program in a context to the concept of executing a program in a partial context. The result of such a execution is a new program that when executed in a context matching the partial context will behave as the original program would. The new program will run faster since as much execution that was possible with respect to the partial context has been done and the result of it built into the new program. We will call such a execution for partial execution. Partial execution may be done for any programming paradigm. When it is done for functional languages we call it partial evaluation. The thesis now is that a certain method of partial execution is advantageous. To support the thesis the method is precisely stated for callbyname functional languages along with arguments of its appropriateness. Then measurements and examples from a successful implementation of the method gives further support. Final...