This notion of change seems to conflate a lot of ideas. Knowing that something has changed is different than being able to replay the change. And once you have a system that cares so much about time haven't you given away half of the programming advantage of functional programming? Sure, there may be immutability, but you trade that for having to manage state explicitly in immutable objects. That just sounds like a whole new class of "race conditions" (you passed me this state object, but someone else just created that state object with the same identity).