我想使用嵌套的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)
最后一行有什么问题?
答案 0 :(得分:2)
您没有关闭(
左侧的\(x,y,d)
。体面编辑器将突出显示与光标处括号对应的括号,或成对的颜色括号,这有助于调试不匹配的括号错误。
考虑将https://hackage.haskell.org/package/containers-0.5.10.2/docs/Data-Map-Strict.html#v:alter用于您的用例。