>>17Consider a tree. Are your mental abilities sufficient to imagine a tree? If so, consider what part of a tree needs to be reconstructed when one of its leaves changes. The answer: only the spine leading to that leaf. I.e. a change in a leaf requires reconstruction of only that leaf plus ~log n spine elements (pointers). Yes, that is right: all the (n - 1) leaves plus all the (n - log n) spine elements can be safely shared between the updated structure and the original one. Thus, "most dynamic datastructures" are far frome ruled out in Haskell; they are used widely and fruitfully.
Read Okasaki's book about purely functional datastructures if you don't want to keep being an uneducated imperative bigot.