Selective Memoization
Abstract
This paper presents language techniques for applying memoization selectively. The techniques provide programmer control over equality, space usage, and identification of precise dependences so that memoization can be applied according to the needs of an application. Two key properties of the approach are that it accepts and efficient implementation and yields programs whose performance can be analyzed using standard analysis techniques. We describe our approach in the context of a functional language called MFL and an implementation as a Standard ML library. The MFL language employs a modal type system to enable the programmer to express programs that reveal their true data dependences when executed. We prove that the MFL language is sound by showing that that MFL programs yield the same result as they would with respect to a standard, non-memoizing semantics. The SML implementation cannot support the modal type system of MFL statically but instead employs run-time checks to ensure correct usage of primitives.
Cite
@article{arxiv.1106.0447,
title = {Selective Memoization},
author = {Umut A. Acar and Guy E. Blelloch and Robert Harper},
journal= {arXiv preprint arXiv:1106.0447},
year = {2011}
}
Comments
Total of 31 pages. This is the full version of a conference paper with the same title that appears in ACM Conference on Principles of Programming Languages (POPL) in 2003