Incremental Computation with Names
arXiv:1503.07792 · doi:10.1145/2814270.2814305
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.
OOPSLA '15, October 25-30, 2015, Pittsburgh, PA, USA
References in corpus (1)
Cited by in corpus (8)
- Incremental Computation with Names
- Demanded Abstract Interpretation (Extended Version)
- Foundations of a live data exploration environment
- A Survey of State Management in Big Data Processing Systems
- The Random Access Zipper: Simple, Purely-Functional Sequences
- Liveness for Verification
- The meaning of a program change is a change to the program's meaning
- miniAdapton: A Minimal Implementation of Incremental Computation in Scheme