Joachim Breitner wrote: > Hi, > > 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 > http://hackage.haskell.org/packages/archive/vector/0.9/doc/html/Data-Vector-Mutable.html > 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 . Data.Vector.Fusion.Stream.Monadic.mapM 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 original vector. > 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. Roman _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe