Self-adjusting programs respond automatically and efficiently to input changes by tracking the dynamic data dependences of the computation and incrementally updating the output as needed. In order to identify data dependences, previously proposed approaches required the user to make use of a set of monadic primitives. However, rewriting an ordinary program into a self-adjusting program with these primitives can be difficult due to various monadic and proper-usage restrictions. It has therefore been suggested that self-adjusting computation would benefit from direct language and compiler support. In this paper, we propose a language-based technique for writing and compiling self-adjusting programs from ordinary programs. To compile self-adjusting programs, we use a continuationpassing style (cps) transformation to automatically infer a conservative approximation of the dynamic data dependences. We ensure the efficient propagation of input changes by generating memoizing versions of cps...
Ruy Ley-Wild, Matthew Fluet, Umut A. Acar