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) を出力する方法がわかりません。たぶん、これをさらに分解する必要がありますか?