-3

私はコードをコンパイラーで始め、最初にmmultで解析エラーを言い、次にlで問題が正確にわからないことを言います。

    mmult :: (Ix i, Num a) => Array (i, i) a -> Array (i, i) a -> Array (i, i) a 
    mmult x y 
        | x1 /= y0 || x1' /= y0'  = error "range mismatch"
        | otherwise               = array ((x0, y1), (x0', y1')) l where
            ((x0, x1), (x0', x1')) = bounds x
            ((y0, y1), (y0', y1')) = bounds y
            ir = range (x0, x0')
            jr = range (y1, y1')
            kr = range (x1, x1')
            l  = [((i, j), sum [x ! (i, k) * y ! (k, j)  | k <- kr] ) | i <- ir, j <- jr]

私を助けてください

4

2 に答える 2

2

最後の行の終わりにいくつかの閉じ括弧がありません。

于 2012-06-20T15:26:42.073 に答える
2
  • 実際のエラーは、この関数の直前にあるものに関係している可能性があります。
    • この関数の直前のコードを示していただけると助かります。
  • mmultは、その前にあるものとは異なる方法でインデントされている可能性があります。
  • タブとスペースが混在している可能性があります。
    • この場合、最も簡単な方法は、タブを取り除き、スペースのみを使用してインデントすることです。

l  = [((i, j), sum [x ! (i, k) * y ! (k, j) )| k <- kr]

これはおそらく

l  = [((i, j), sum [x ! (i, k) * y ! (k, j)  | k <- kr] ) | i <- ir, j <- jr]
于 2012-06-20T16:59:01.927 に答える