That&#x27;s an interesting point. One of the nice things about immutable structures is that old things can never point at new things. (Some might exploit laziness to allow some sort of loop but I&#x27;d count that thunk as a mutable structure, even if it&#x27;s referentially transparent like in Haskell.)<p>Some functional languages leverage this sort of restriction to their advantage. It can simplify garbage collection and serialization protocols don&#x27;t need to track visited nodes for example. It&#x27;s certainly nice to be able to step out of this mode from time to time and many functional languages provide controlled effects of sorts. I think an interesting area to study would be the balance between minimal effects and otherwise immutable structures. I wouldn&#x27;t however, use this to sacrifice persistence, which it seems many implementations do.