rl at cse.unsw.edu.au
Sun Oct 23 16:53:32 CEST 2011
Joachim Breitner wrote:
> Iâm consdering to change some performance critical code from Vector to
> MVector, hopefully avoiding a lot of copying and garbage collecting. But
> it seems that the Data.Vector.Mutable interface at
> is quite limited; e.g. I am missing simple functions having type
> modifyM :: PrimMonad m => (a -> m a) -> MVector (PrimState m) a ->
> m ()
> that would do something with each element in the vector.
At the moment, the best way to do this is:
modifyM = Data.Vector.Generic.Mutable.transform
Note that transform will return a new vector but that is guaranteed to be
a slice of the original one. Since mapM doesn't change the number of
elements, you can safely ignore the return value as it will be always your
> Is this an indication that such use is actually not desired, or is it
> just the case that nobody has developed that yet?
The latter. I need to come up with a nice mechanism for specifying loops
over mutable vectors but this isn't entirely trivial and I haven't had
enough time to really work on this lately.
More information about the Haskell-Cafe