嵌套的case表达式和缩进错误

时间:2018-01-16 12:04:28

标签: haskell

我想使用嵌套的case-expressions所以我试着编写这段代码,我在最后2个小时被困在这里,无法弄清楚为什么它在最后一行给我错误。

getAdjacency :: [Node a] -> Map.Map k v -> Map.Map k v
getAdjacency matched adjacency = matched >>= (\(x,y,d) -> do
   case (Map.lookup y adjacency) of
                   Nothing -> Map.insert y (x,d) adjacency
                   Just ((nod,value)) ->
                                      case ((d + distance) < value) of
                                        True -> (Map.insert y (x,d+distance) adjacency)
                                        False -> (Map.insert y (nod,value) adjacency)

它说parse error(Possible indentation error or mismatched brackets)

最后一行有什么问题?

1 个答案:

答案 0 :(得分:2)

您没有关闭(左侧的\(x,y,d)。体面编辑器将突出显示与光标处括号对应的括号,或成对的颜色括号,这有助于调试不匹配的括号错误。

考虑将https://hackage.haskell.org/package/containers-0.5.10.2/docs/Data-Map-Strict.html#v:alter用于您的用例。