Incremental computation with names

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.

Document Details

Document Type
Pub Defense Publication
Publication Date
Oct 23, 2015
Source ID
10.1145/2858965.2814305

Entities

People

  • David Van Horn
  • Jana Dunfield
  • Jeffrey S. Foster
  • Kyle Headley
  • Matthew A. Hammer
  • Michael Hicks
  • Nicholas Labich

Organizations

  • Defense Advanced Research Projects Agency
  • National Science Foundation
  • University of British Columbia
  • University of Colorado Boulder
  • University of Maryland

Tags

Fields of Study

  • Computer science

Readers

  • Computational Fluid Dynamics (CFD)
  • Computational Linguistics