Mutability is attained by using the ST monad. The ST monad uses mutable memory, but since it does not allow other interactions with the outside world, its value can be extracted (unlike the IO monad). When you are done with the modification of the vector, it can be frozen to obtain a pure vector.
The IO monad can also be used, but not if you want to return a pure value.
http://hackage.haskell.org/package/vector-0.7.0.1
Mutability is attained by using the ST monad. The ST monad uses mutable memory, but since it does not allow other interactions with the outside world, its value can be extracted (unlike the IO monad). When you are done with the modification of the vector, it can be frozen to obtain a pure vector.
The IO monad can also be used, but not if you want to return a pure value.
A good tutorial can be found at:
http://www.haskell.org/haskellwiki/Numeric_Haskell:_A_Vector...
I used mutable vectors in the ST monad in maximum entropy training software, and they are really performant.