【发布时间】:2018-09-12 02:15:54
【问题描述】:
我有两个以下类型的数组:
a :: IOArray Word16 Word16
b :: [Word16]
我想要一个函数 copyAtPositionI 将数组 b 的所有元素复制到数组 a 中,从数组 的第 i 个索引开始>一个。可以假设索引不会尝试将元素复制到数组 a 的边界之外。
函数应为以下类型:
copyAtPositionI :: IOArray Word16 Word16 -> [Word16] -> Word16 -> IO ()
例如(这不是 Haskell),
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
b = [10, 11, 12, 13]
copyAtPositionI ab 3 应该导致 a 等于 [1, 2, 3, 10, 11, 12, 13, 8, 9]
我没有在 Data.Array.IO 包中找到任何符合我要求的函数。我只在 Data.Array.MArray 包中找到了函数writeArray,但我不知道如何为数组 b 中的每个元素执行该函数。 p>
【问题讨论】:
-
听起来您只需要
mapM_对您的列表进行插入操作b。 -
您能说得更具体些吗?我很难理解如何使用索引来应用它。
标签: arrays haskell functional-programming copy