How about a flip book?
In a flip book each page represents the world as it exists at a moment in time. In our program the world is represented as some compound data structure (e.g. we have a banana which is in the hand of a gorilla which is in a tree which is in a jungle). Each subsequent page advances the story by slightly modifying the previous representation. In FP, persistent data structures were designed to efficiently reuse previous structures so that a change provides only a delta and not a completely new rendition.
What may not be obvious is that a page in our flip book would also represent intangibles. For example, if the gorilla drops the banana we might start applying the effects of gravity on its decent and acceleration toward the jungle floor. To accommodate this we'd attach attributes such as velocity and trajectory to our banana.
In our program there would be a function that accepts a flip book page (a.k.a. the state of the world) as an argument and yields a new pageyields a new page. In this manner our story is told without ever actually changing the state of existing objects. We simply supersede each page with a newer one using what is effectively a calculation.