You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Haskell中实现从指定索引复制不可变数组到可变数组的方法

实现copyAtPositionI函数的方案

没问题,这就帮你搞定这个Haskell函数的实现!

首先,我们需要导入必要的标准库模块,来处理Word16类型和IOArray的操作:

import Data.Word (Word16)
import Data.Array.IO (IOArray, writeArray)

接下来是函数的实现,思路很直接:把列表里的每个元素和它要写入的目标索引一一配对,然后逐个写入到IO数组中:

copyAtPositionI :: IOArray Word16 Word16 -> [Word16] -> Word16 -> IO ()
copyAtPositionI arr values startIdx = 
  mapM_ (\(idx, val) -> writeArray arr idx val) $ zip [startIdx..] values

代码解释

  • zip [startIdx..] values:这个表达式会生成一个索引和元素的配对列表。比如如果startIdx是5,values是[10,20,30],就会得到[(5,10), (6,20), (7,30)],完美对应每个元素要写入的位置。
  • mapM_:这个函数会遍历配对列表,对每一对执行writeArray arr idx val操作。因为writeArray返回IO (),mapM_会把这些IO动作依次执行,最后返回一个总的IO (),刚好符合我们函数的返回类型要求。

因为题目已经明确说明不会出现索引越界的情况,所以我们不需要额外添加边界检查逻辑,这个实现就能满足需求啦。

内容的提问来源于stack exchange,提问作者gibarsin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:38:29