ACM SIGPLAN Notices · 2014 · 18 citations · 26 references
ComputingComputer ScienceFormal MethodsProgramming LanguagesSystems ProgrammingData-flow AnalysisIncremental ChangeIncremental ComputationIncremental Processing
Many researchers have proposed programming languages that support incremental computation (IC), which allows programs to be efficiently re-executed after a small change to the input. However, existing implementations of such languages have two important drawbacks. First, recomputation is oblivious to specific demands on the program output; that is, if a program input changes, all dependencies will be recomputed, even if an observer no longer requires certain outputs. Second, programs are made incremental as a unit, with little or no support for reusing results outside of their original context, e.g., when reordered. To address these problems, we present λ ic cdd , a core calculus that applies a demand-driven semantics to incremental computation, tracking changes in a hierarchical fashion in a novel demanded computation graph . λ ic cdd also formalizes an explicit separation between inner, incremental computations and outer observers. This combination ensures λ ic cdd programs only recompute computations as demanded by observers, and allows inner computations to be reused more liberally. We present Adapton, an OCaml library implementing λ ic cdd . We evaluated Adapton on a range of benchmarks, and found that it provides reliable speedups, and in many cases dramatically outperforms state-of-the-art IC approaches.
26
Two algorithms for maintaining order in a list
Paul F. Dietz, Daniel D. Sleator · 1987 · 324 citations · Full text
Incremental computation via function caching
William Pugh, Tim Teitelbaum · 1989 · 197 citations
Asynchronous functional reactive programming for GUIs
Evan Czaplicki, Stephen Chong · 2013 · 164 citations · Full text
A categorized bibliography on incremental computation
G. Ramalingam, Thomas Reps · 1993 · 162 citations
Leo A. Meyerovich, Arjun Guha, Jacob Baskin et al. · 2009 · 152 citations