[Haskell-cafe] replicateM over vectors
Chad.Scherrer at pnl.gov
Thu Apr 1 17:48:05 EDT 2010
I'd like to be able to do replicateM, but over a vector instead of a list. Right now I'm doing this:
import qualified Data.Vector.Generic as G
import qualified Data.Vector.Unboxed.Mutable as M
replicateM n action = do
mu <- M.unsafeNew n
let go !i | i < n = action >>= M.unsafeWrite mu i >> go (i+1)
| otherwise = G.unsafeFreeze mu
I thought it might be useful to express this in terms of the available primitives, since this might fuse more easily, but I don't yet see a way to do it.
Is there a better (more elegant and/or faster) way to write this?
More information about the Haskell-Cafe