My main gripe with immutability is that making updated data requires building a full copy of the data again with the changes. Sure, you could have zippers to aid in the updating process by acting as a kind of cursor/pointer, but raw access to data beats them anytime (even if you optimize for cache).
So if you had to optimize for raw speed, why not choose mutable data?
So if you had to optimize for raw speed, why not choose mutable data?
https://ksvi.mff.cuni.cz/~sefl/papers/zippers.pdf