gpt4 book ai didi

haskell - 在 Haskell 中访问二维 newListArray

转载 作者:行者123 更新时间:2023-12-02 17:02:07 25 4
gpt4 key购买 nike

以下 Haskell 代码编译后没有错误或警告:

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

nLA :: (Ix i) => (i,i) -> [e] -> ST s ((STArray s) i e)
nLA = newListArray

bs :: (Ord a) => [a] -> [a]
bs xs = runST $
do { xa <- nLA ((1,n),(1,n)) xs;
readArray xa (1,1);
getElems xa}
where n = length xs

但是当函数 bs 的输入为

时,GHCi 会提示
bs [((1,1),1),((1,2),2),((2,1),3),((2,2),4)]
*** Exception: Error in array index

或输入

bs [(1,1),(2,2),(3,3),(4,4)]
*** Exception: Error in array index

那么,访问数组xa中的值的正确方法是什么?

最佳答案

xa <- nLA ((1,n),(1,n)) xs创建一个只有一个元素的数组,因为最低和最高索引都是 (1,n) 。当然,readArray xa (1, 1)您的示例失败,因为 (1,1)索引不在数组中。 nLA ((1,1),(1,n)) xs在这种情况下更有意义。

关于haskell - 在 Haskell 中访问二维 newListArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31190048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com