Reference
Abstract
Over the past thirty years, there has been significant progress in developing general-purpose, language-based approaches to incremental computation, which aims to efficiently update the result of a computation when an input is changed. A key design challenge in such approaches is how to provide efficient incremental support for a broad range of programs. In this paper, we argue that first-class names are a critical linguistic feature for efficient incremental computation. Names identify computations to be reused across differing runs of a program, and making them first class gives programmers a high level of control over reuse. We demonstrate the benefits of names by presenting Nominal Adapton, an ML-like language for incremental computation with names. We describe how to use Nominal Adapton to efficiently incrementalize several standard programming patterns—including maps, folds, and unfolds—and show how to build efficient, incremental probabilistic trees and tries. Since Nominal Adapton's implementation is subtle, we formalize it as a core calculus and prove it is from-scratch consistent, meaning it always produces the same answer as simply re-running the computation. Finally, we demonstrate that Nominal Adapton can provide large speedups over both from-scratch computation and Adapton, a previous state-of-the-art incremental computation system.
BibTeX
@string{OOPSLA = "ACM SIGPLAN Conference on Object Oriented Programming Systems Languages and Applications (OOPSLA)"} @inproceedings{adaptonwithnames-oopsla15, author = {Matthew A. Hammer and Joshua Dunfield and Kyle Headley and Nicholas Labich and Jeffrey S. Foster and Michael Hicks and David Van Horn}, title = {Incremental Computation with Names}, booktitle = OOPSLA, year = {2015}, }