How do I generate an IO Vector?

时间:2017-06-15 09:52:42

标签: haskell vector

Data.Vector has generate :: Int -> (Int -> a) -> Vector a but I don't see an equivalent in Data.Vector.Mutable. What am I missing?

1 个答案:

答案 0 :(得分:1)

您可以安全地将unsafeThaw应用于generate的输出,以生成一个零复制的可变向量:

import Data.Vector
import Data.Vector.Mutable
main :: IO ()
main = do mv <- unsafeThaw (generate 10 (*5))
          write mv 3 999
          print =<< freeze mv

请注意,使unsafeThaw不安全的唯一方法是在操作后不能使用不可变向量,因此上面的模式是安全的。