Tutorial on Online Partial Evaluation

@inproceedings{Cook2011TutorialOO,
  title={Tutorial on Online Partial Evaluation},
  author={William R. Cook and Ralf L{\"a}mmel},
  booktitle={DSL},
  year={2011}
}
This paper is a short tutorial introduction to online partial evaluation. We show how to write a simple online partial evaluator for a simple, pure, first-order, functional programming language. In particular, we show that the partial evaluator can be derived as a variation on a compositionally defined interpreter. We demonstrate the use of the resulting partial evaluator for program optimization in the context of model-driven development. 

Shallow embedding of DSLs via online partial evaluation

This paper investigates shallow embedding of DSLs by means of online partial evaluation. To this end, we present a novel online partial evaluator for continuation-passing style languages. We argue

Partial Evaluation of OCL Expressions

  • B. UlkeF. SteimannR. Lämmel
  • Computer Science
    2017 ACM/IEEE 20th International Conference on Model Driven Engineering Languages and Systems (MODELS)
  • 2017
A scheme for partially evaluating OCL expressions that allows one to capitalize on given OCL specifications for a wide array of purposes using a single implementation: a partial evaluator of OCL.

Shallow embedding of DSLs via online partial evaluation

This paper investigates shallow embedding of DSLs by means of online partial evaluation. To this end, we present a novel online partial evaluator for continuation-passing style languages. We argue ...

Normalization and Partial Evaluation of Functional Logic Programs

This work develops a formal representation of the normalization process of Curry programs into a kernel language, and defines the dynamic semantics of this kernel language before developing a partial evaluation scheme that is directly applicable to arbitrary Curry programs.

AnyDSL: a partial evaluation framework for programming high-performance libraries

This paper presents a clean-slate programming system with a simple, annotation-based, online partial evaluator that operates on a CPS-style intermediate representation that exposes code generation for accelerators via compiler-known higher-order functions that can be subjected to partial evaluation.

Property-preserving program refinement

  • Yosuke Yamamoto
  • Computer Science
    2012 Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering
  • 2012
This paper illustrates two examples of property-preserve refinement, partial evaluation and generalization, and explores the correctness-preserving equivalences underpinning those refinement techniques.

Scalable logic defined static analysis

A novel evaluation technique that is predicated on the fact that in the case of static analysis, the logical specification is a design time artefact and hence does not change during evaluation is proposed, which enables a novel indexing optimisations that automatically selects an optimal set of indexes to speedup and minimise memory usage in the Datalog computation.

Language Support for Programming High-Performance Code

Sierra: an extension for C++ that facilitates portable and effective SIMD programming and AnyDSL, a framework that allows to embed a so-called domain-specific language (DSL) into a host language.

Yet another annotated SLEBOK bibliography

The purpose of this annotated bibliography is to contribute to the SLE body of knowledge (SLEBOK) and collects a manageable set of papers that cover many principles and practilities of SLE in an accessible manner.

Symbolic Specialization of Rewriting Logic Theories with Presto

The effectiveness of the symbolic partial evaluator for Maude that respects the semantics of functional, logic, concurrent, and object-oriented computations is demonstrated in several examples of protocol analysis where it achieves a significant speed-up.

References

SHOWING 1-10 OF 12 REFERENCES

Hybrid partial evaluation

Civet, a straightforward implementation of HPE as a relatively simple extension of a Java compiler, is described and code optimized by Civet performs as well as the output of a state-of-the-art offline partial evaluator.

Generic programming, partial evaluation, and a new programming paradigm

  • C. LandauerK. Bellman
  • Computer Science
    Proceedings of the 32nd Annual Hawaii International Conference on Systems Sciences. 1999. HICSS-32. Abstracts and CD-ROM of Full Papers
  • 1999
A new approach to Generic Programming that combines the authors' integration results with Partial Evaluation methods for adaptation is described, which supports Partial Evaluation by providing much more information than is usually available, including explicit meta-knowledge about the program fragments and their intended execution environments.

The Generation of a Higher-Order Online Partial Evaluator

A transformer for higher-order removal and higher- order arity raising (redundancy elimination) for free is obtained by running the online specializer on a program with completely dynamic inputs, by using a self-embedding property on closure values and data structures.

C++ Templates as Partial Evaluation

This paper describes preliminary work toward a single mechanism based on Partial Evaluation which unifies generic programming, compile-time computation and code generation and the language Catat is introduced to illustrate these ideas.

Towards bridging the gap between programming languages and partial evaluation

A high-level, module-based language allowing the programmer to guide the choice of both the code to specialize and the invariants to exploit during the specialization process, and has been successfully used by a signal-processing expert in the design of a specializable Forward Error Correction component.

Reuse by Program Transformation

  • R. Lämmel
  • Computer Science
    Scottish Functional Programming Workshop
  • 1999
The overall thesis of this paper is that suitable operator suites for automated adaptations and a corresponding transformational programming style can eventually be combined with other programming styles, such as polymorphic programming, modular programming, or the monadic style, in order to improve reusability of functional programs.

Modular domain specific languages and tools

  • P. Hudak
  • Computer Science
    Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203)
  • 1998
A methodology is described for building domain specific embedded languages (DSELs), in which a DSL is designed within an existing, higher-order and typed, programming language such as Haskell or ML, which facilitates reuse of syntax semantics, implementation code, software tools, and look-and-feel.

Monadification of functional programs

Partial evaluation and automatic program generation

This paper presents a guide to the literature the self-applicable scheme specializer, a partial evaluator for a subset of scheme for a first-order functional languages.

Partial Evaluation of Computation Process--An Approach to a Compiler-Compiler

  • Y. Futamura
  • Computer Science
    High. Order Symb. Comput.
  • 1999
A method to automatically generate an actual compiler from a formal description which is, in some sense, the partial evaluation of a computation process is described.