

A Theory of Changes for Higher-Order Languages [pdf] - taylodl
http://www.informatik.uni-marburg.de/~pgiarrusso/papers/pldi14-ilc-author-final.pdf

======
guru_meditation
It looks to me like the authors attempt to develop a method to automatically
make any program memoizable, similarly to how you can automatically
differentiate a huge family of differentiable functions in your favorite
symbolic math program (Mathematica, maybe?)

Are there more examples of differential plugins (that to me look akin to the
table of derivatives in your Calculus I book)?

From the paper:

Users of our approach need to (1) choose which base types and primitives they
need (2) implement suitable differentiation plugins for these base types and
primitives (3) rewrite (relevant parts of) their programs in terms of these
primitives (4) arrange for their program to be called on changes instead of
updated inputs.

Anyone seen some more examples other than they toy example in the paper?

Not a PL person, sorry if I misunderstood something.

------
robertk
I recently wrote an R package that computes the differences between arbitrary
R objects as closures precisely for the reason the authors gave in their
abstract: it is much more computationally feasible to remember changes in
program outputs than to perform full recomputation. In their lingo, this means
I defined a change structure for R objects.

[https://github.com/robertzk/objectdiff](https://github.com/robertzk/objectdiff)

