Partial Evaluation with Partially Static Operations

نویسنده

  • Peter Thiemann
چکیده

Partial evaluation distinguishes between different binding times when manipulating values in a program. A partial evaluator performs evaluation steps on values with a static binding time whereas it generates code for values with a dynamic binding time. Binding time descriptions have evolved from monolithic to fine grained, partially static data structures where different components may have different binding times. We consider the next step in this evolution where not just data constructors but also operations can give rise to partially static structures, which are processed by the partial evaluator. We introduce this notion in an online setting, generalize it, generate a binding-time analysis for it, and specify an offline program generator supporting partially static operations with it. We prove the correctness of the binding-time analysis as well as the correctness and the completeness of the offline specializer with respect to the online specializer. General Terms Experimentation, Languages, Theory

منابع مشابه

Limix: a Partial Evaluator for Partially Static Structures

Partial evaluators essentially deal with values which can completely be computed during specialization. Some of them handle partially static structures. In this paper, we demonstrate that partial evaluation can be split into three main mechanisms. Moreover, this is suitable for partially static structures. The rst mechanism specializes functions when a part of its arguments is known and nds an ...

متن کامل

Generic Operations and Partial Evaluation using Models

Model-driven software development is a promising new application area for partial evaluation. In this papers, we develop an approach to generic programming using models instead of types. The work is done in the context of Pummel, a first-order subset of Scheme with objects and monoid comprehensions. We define generic operations for validation, reading, and equality of values described by models...

متن کامل

For a Better Support of Static Data Flow

This paper identiies and solves a class of problems that arise in binding time analysis and more generally in partial evaluation of programs: the approximation and loss of static information due to dynamic expressions with static subexpressions. Solving this class of problems yields substantial binding time improvements and thus dramatically better results not only in the case of partial evalua...

متن کامل

Implementing Memoization for Partial Evaluation

Memoization is a key ingredient in every partial evaluator. It enables folding by caching previously specialized functions. It is essential to make polyvariant specialization terminate. Its implementation is reasonably straightforward in a standard specializer that represents functions by closures. With the advent of handwritten program-generator generators (PGGs), implementing memoization gets...

متن کامل

The Essence of Eta-Expansion in Partial Evaluation

Selective eta expansion is a powerful binding time improve ment i e a source program modi cation that makes a partial evaluator yield better results But like most binding time improvements the exact problem it solves and the rea son why have not been formalized and are only understood by few In this paper we describe the problem and the e ect of eta redexes in terms of monovariant binding time ...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

متن کامل
عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2014