I find this post a bit wordy but interesting. It notably points out well how the two approaches to deal with the state of a system, using versions or overwriting it, are in competition since a long time and in various domain of computer sciences.<p>Alan also cites a paper about [Worlds: Controlling the Scope of Side Effects](<a href="http://www.vpri.org/pdf/tr2011001_final_worlds.pdf" rel="nofollow">http://www.vpri.org/pdf/tr2011001_final_worlds.pdf</a>). A hot topic in the functional programming world. That paper makes me remember that ideas from FP and OO can mutually improve (an idea well developed in this short video <a href="https://www.youtube.com/watch?v=iSmkqocn0oQ" rel="nofollow">https://www.youtube.com/watch?v=iSmkqocn0oQ</a>.