Sun Apr 18 12:50:09 EDT 2010


Anyways...  This is getting a bit overdesigned as is usual for a labor
of love.  The patterns are interesting though.

Caching and representation are important in practice in the sense that
they are not important at all (and code complexity can be minimized,
focussing on solving the main problem) or they are a big problem and
code structure needs to incorporate representation as a cross-cutting
concern that is difficult to isolate and can easily dominate the
structure of the overall solution.

Important conclusions:

  * Concrete intermediate data structures (as opposed to functional
    representation or thunks) are an optimization.  It's probably best
    to keep the design functional and representations abstract.

  * Data indexing can easily be the most complicated step if the
    representation is not well thought-out, leading to a necessity to
    keep an intermediate representation to get decent performance.
It might help to tailor the basic representation such that this step
can be performed at "edit time" to provide for a finer incremental
update footprint.

I.e. for the ramblings format: while having a single flat file as
basic representation is easy for editing in a text editor, but a pain
to navigate as the index has to be completely rebuilt on every edit.
The reactive dependencies make this pretty clear.