0
주어진 벡터 요소에 적용 할 변경 목록입니다. 어떻게 이것을 돌연변이로 달성 할 수 있습니까? 내 현재 코드는 지금까지 다음과 같습니다변경 가능한 벡터의 요소에 변경 목록 적용
mapM_
를 사용
import Control.Monad.ST
import qualified Data.Vector.Mutable as M
import qualified Data.Vector as V
main :: IO()
main = do
let v = V.fromList [8,7,4,1,5] :: V.Vector Integer
-- The elements in changes are pairs of vector index and change to apply.
let changes = [(0, (+1)), (3, (*3)), (2, (/2))]
let v' = applyChanges changes v
print $ V.toList v'
applyChanges changes v = runST $ do
mV <- V.thaw v
-- apply (+1) to element 0 -> [9,7,4,1,5]
-- apply (*3) to element 3 -> [9,7,4,3,5]
-- apply (/2) to element 2 -> [9,7,2,3,5]
V.freeze mV
간단하고 좋습니다. 고맙습니다. –