Tue Apr 20 15:04:26 EDT 2010

Experience with using the cache abstraction (rv.ss)

It seems to work quite well, allowing this workflow: 

  1 focus on solving the problem using struct, pure functions without
    worrying about storage. i.e. build a vocabulary.

  2 identify nodes in the computation graph that would benefit from
    cached/lazy operation.

  3 write functions that relate those nodes.

  4 lift the latter functions into the reactive value domain using

  5 use `rv-force' at the toplevel to pull values from the network.

What I miss though after initial Haskell brainwash (how quickly the
world owes me something..), is a type system that tells me whether a
computation is pure or not.  I.e. you can't see what's behind an #<rv>
without applying `rv-force'.

The idea of "lifting" pure computations into the effectful world is a
very powerful one.  A type system that can understand the differences
between pure and lifted values gives some pretty direct feedback while
manipulating code.