在haskell解析错误在l

时间:2012-06-20 15:22:45

标签: haskell

我编译代码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]

请帮帮我

2 个答案:

答案 0 :(得分:2)

你在最后一行的末尾错过了几个近括号。

答案 1 :(得分: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]