Memoization in Type-Directed Partial Evaluation
DOI:
https://doi.org/10.7146/brics.v9i33.21748Abstract
We use a code generator--type-directed partial evaluation--to verify conversions between isomorphic types, or more precisely to verify that a composite function is the identity function at some complicated type. A typed functional language such as ML provides a natural support to express the functions and type-directed partial evaluation provides a convenient setting to obtain the normal form of their composition. However, off-the-shelf type-directed partial evaluation turns out to yield gigantic normal forms.We identify that this gigantism is due to redundancies, and that these redundancies originate in the handling of sums, which uses delimited continuations. We successfully eliminate these redundancies by extending type-directed partial evaluation with memoization capabilities. The result only works for pure functional programs, but it provides an unexpected use of code generation and it yields orders-of-magnitude improvements both in time and in space for type isomorphisms.
Downloads
Published
2002-07-05
How to Cite
Balat, V., & Danvy, O. (2002). Memoization in Type-Directed Partial Evaluation. BRICS Report Series, 9(33). https://doi.org/10.7146/brics.v9i33.21748
Issue
Section
Articles
License
Articles published in DAIMI PB are licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License.