我正在努力将 F# 中的这段矩阵乘法转换为 Haskell(请忘记并行组件):
Parallel.For(0, rowsA, (fun i->
for j = 0 to colsB - 1 do
for k = 0 to colsA - 1 do
result.[i,j] <- result.[i,j] + a.[i,k] * b.[k,j]))
|> ignore
我设法放在一起的是
sum (map (\(i, j, k) -> (my.read (a,i,k)) * (my.read (b, k, j))) [ (i, j, k) | i <- [0..rowsA], j <- [0..colsB], k <- [0..colsA] ])
--my.read reads the values of the respective cells from 'my' database
目的是从我的数据库中读取矩阵 a 和矩阵 b 的单元格,并进行矩阵乘法,最终可以由不同的代理分部分执行。这是通过设置 i 、 j 和 k 的边界来控制的,但在这里不相关。
我试图将上面的 F# 示例翻译成 haskell。我正在努力解决的问题是结果不是所有内容的总和,而是在位置 i, j(F# result.[i,j] - 单元格是结果矩阵) 处应该有一个结果列表。我看不到如何发出正确的结果(i,j)。也许我必须进一步分解?