我目前在一个项目中,需要访问 Haskell 中的 Array-Matrix 中的元素。所以,我试着用谷歌搜索它,到处搜索。
函数应该是这样的:
getElementIndex :: Int -> Array (Int,Int) Int -> (Int,Int)
并且它必须返回矩阵中元素的I
和J
索引。
最佳答案
要在 Haskell 中从 Array
类型中读取元素,请使用 (!)
运算符,如下所示:
Prelude Data.Array> let v = listArray (0,9) [1..10]
Prelude Data.Array> v ! 3
4
所以,现在您需要做的就是遍历索引空间、行和列。我喜欢这种任务的列表推导:
assocs' x y arr = [ ((i,j), arr ! (i,j))
| i <- [0..x-1]
, j <- [0..y-1]
]
这只是 Data.Array.assocs
的一个特殊版本:
assocs :: Ix i => Array i e -> [(i, e)]
它返回索引和元素的惰性列表。所以,调用 assocs
,然后取第一个匹配的元素。
关于arrays - Haskell 数组(矩阵)元素访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5941127/