如何将STArray转换为Haskell中的List?

RnM*_*Mss 0 monads haskell state-monad

有功能可以做功能arrayToList吗:

import Data.Array.ST
import Control.Monad.ST

genArray :: ST s [Int]
genArray = do
   a <- new Array (0, 99) 0 :: ST s (STArray s Int Int)
   writeArray a 0 1
   {- ... write something to the array ... -}
   return arrayToList(a)
Run Code Online (Sandbox Code Playgroud)

如果没有,怎么写一个?

Sjo*_*her 6

你不需要IO这个,构建一个列表是一个纯粹的操作:

genArray :: [Int]
genArray = runST $ do
  a <- newArray (0, 99) 0 :: ST s (STArray s Int Int)
  writeArray a 0 1
  {- ... write something to the array ... -}
  getElems a
Run Code Online (Sandbox Code Playgroud)