AFAIK, ST Arrays are pure data structures. They are not really mutable. They are destroyed and recreated on every update. The mutation is just simulated thanks to the hidden state in the state monad. Sure, the garbage collector must have a hard work in recycling all the "backbones" of the discarded arrays (not the elements).
2009/12/14 Brad Larsen <[email protected]>
Is anyone working on fixing ticket #650
<http://hackage.haskell.org/trac/ghc/ticket/650>? In short, STArray
and the garbage collector don't play well together, resulting in array
updates being non-constant time operations. This bug makes it very
difficult/impossible to write efficient array algorithms that depend
upon mutation in Haskell.
On another note, does this (or perhaps better phrased, will this) bug
also affect Data Parallel Haskell?
I would really like to see highly efficient, mutable, boxed arrays in
Haskell! Unfortunately, I don't have the know-how to fix Ticket 650.
Haskell-Cafe mailing list