I want to write a program where a user would update a bunch of variables, and everything that depends on those variables (and nothing else) are recalculated.  Basically, a spreadsheet, but generalized for any computation.  Could someone recommend an elegant way to do it or some good reading material?

Thanks,
Greg