I am not sure if you want more examples, but:

Spreadsheets often carefully avoid recomputation (a.k.a. caching or
memoization)
Gosper's HashLife is an example of clever memoization
Blelloch, Acar and Harper have a couple papers called "Selective
Memoization" and "Adaptive Functional Programming" about memoization and
incremental recomputation that seem (to my idiot eyes) to offer a
programming language theory-based approach to control of memoization (you
can memoize everything and some programming languages do but it's not
usually practical.)

Soar has a form of memoization called chunking that is a little bit
"lifted". Rather than a function computing an output from an input, and
then storing an input/output pair, there's a backtracing step and the thing
that is memoized is a rule that has variables in it - it may be able to
apply to sufficiently similar inputs, a form of explanation-based
generalization. I think it's also a bit like just-in-time compilation.

Just-in-time compilation is an example of selective memoization - the
compiled code (as you mention) is the output of a computation, and keeping
an executable around is a cache. However, you don't necessarily want to do
the compilation step; the heuristics around just-in-time computation are
about how to decide when it would be worthwhile to start a cache.

Johnicholas
-- 
To unsubscribe: http://lists.canonical.org/mailman/listinfo/kragen-discuss

Reply via email to