Implementing Circularity Using Partial Evaluation

Julia L. Lawall. Implementing Circularity Using Partial Evaluation. In Olivier Danvy, Andrzej Filinski, editors, Programs as Data Objects, Second Symposium, PADO 2001, Aarhus, Denmark, May 21-23, 2001, Proceedings. Volume 2053 of Lecture Notes in Computer Science, pages 84-102, Springer, 2001. [doi]

Abstract

Complex data dependencies can often be expressed concisely by defining a variable in terms of part of its own value. Such a circular reference can be naturally expressed in a lazy functional language or in an attribute grammar. In this paper, we consider circular references in the context of an imperative C-like language, by extending the language with a new construct, persistent variables. We show that an extension of partial evaluation can eliminate persistent variables, producing a staged C program. This approach has been implemented in the Tempo specializer for C programs, and has proven useful in the implementation of run-time specialization.