Implementing Memoization for Partial Evaluation (1997)
| Venue: | In Herbert Kuchen and Doaitse Swierstra, editors, International Symposium on Programming Languages, Implementations, Logics and Programs (PLILP '96 |
| Citations: | 5 - 4 self |
BibTeX
@INPROCEEDINGS{Thiemann97implementingmemoization,
author = {Peter Thiemann},
title = {Implementing Memoization for Partial Evaluation},
booktitle = {In Herbert Kuchen and Doaitse Swierstra, editors, International Symposium on Programming Languages, Implementations, Logics and Programs (PLILP '96},
year = {1997},
pages = {198--212},
publisher = {Springer-Verlag}
}
Years of Citing Articles
OpenURL
Abstract
. 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 programgenerator generators (PGGs), implementing memoization gets harder, because PGGs use efficient standard representations of data at specialization time. We present several implementations of memoization for PGGs that are able to deal with all features of current partial evaluators, specifically partially static data and functions. The first implementation is based on message passing. It is simple, portable, and efficient, but only suitable for untyped higher-order languages such as Scheme. The second implementation is geared towards typed language such as SML. Whereas the first two implementations are completely portable, our third implementation exploit...







