-3

我编译代码 agin 和 agin 第一次在 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
  • 实际错误可能与此函数之前的内容有关。
    • 如果您在此函数之前向我们展示代码,将会对我们有所帮助。
  • 它可能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 回答
2

您在最后一行的末尾缺少几个右括号。

于 2012-06-20T15:26:42.073 回答