Haskell解析错误输入`|' [英] Haskell parse error on input `|'
本文介绍了Haskell解析错误输入`|'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
错误信息; 2006grafen.hs:40:12:parse error on input`|'
代码:
数据Edge a = Boog aa派生Show
data Graph a = Graaf [a] [Edge a]派生Show
vindBuren :: Eq a => a - >图表a - > [a]
vindBuren _(Graaf list [])= []
vindBuren knoop(Graaf list((Boog x y):rest))
| knoop == x = y:(vindBuren knoop(Graaf list rest))
| knoop == y = x:(vindBuren knoop(Graaf list rest))
|否则= vindBuren knoop(Graaf列表休息)
graadKnoop ::等式a =>图表a - > a - > Int
graadKnoop graaf el = length(vindBuren el graaf)
buurgraadKnoop :: Eq a =>图表a - > a - > [Int]
buurgraadKnoop graaf el =
let
buren = vindBuren el graaf
in
reverse $ sort $ map(graadKnoop graaf)buren
buurgraad :: Eq a =>图表a - > [([Int],[a])]
buurgraad graaf = hulp graaf []
hulp :: Eq a =>图表a - > [([Int],[a])] - > (Graaf(fstN:restN)l)soFar
| elem bgraden(map fst soFar)= hulp(Graaf restN l)(mergeG fstN bgraden soFar)
|否则= hulp(Graaf restN l)[(bgraden,[fstN])]:soFar
其中
bgraden = buurgraadKnoop g fstN
mergeG :: a - > [Int] - > [([Int],[a])] - > [([Int],[a])]
mergeG n ngraden((gradenL,nodenL):rest)
| ngraden == gradenL =((gradenL,sort(nodenL:n)):rest
| otherwise = mergeG n ngraden rest
$ b $你忘了关闭((gradenL,sort(nodenL:n))
中的圆括号。
前面的括号是多余的,所以你可以简单地写(gradenL,sort $ nodenL:n)
Haskell keeps giving this and I can't see why. Tried to rewrite with if/else but then it complains about that...
Error message; 2006grafen.hs:40:12: parse error on input `|'
Code:
data Edge a = Boog a a deriving Show
data Graph a = Graaf [a] [Edge a] deriving Show
vindBuren :: Eq a => a -> Graph a -> [a]
vindBuren _ (Graaf list []) = []
vindBuren knoop (Graaf list ((Boog x y):rest))
| knoop == x = y : (vindBuren knoop (Graaf list rest))
| knoop == y = x : (vindBuren knoop (Graaf list rest))
| otherwise = vindBuren knoop (Graaf list rest)
graadKnoop :: Eq a => Graph a -> a -> Int
graadKnoop graaf el = length (vindBuren el graaf)
buurgraadKnoop :: Eq a => Graph a -> a -> [Int]
buurgraadKnoop graaf el =
let
buren = vindBuren el graaf
in
reverse $ sort $ map (graadKnoop graaf) buren
buurgraad :: Eq a => Graph a -> [([Int],[a])]
buurgraad graaf = hulp graaf []
hulp :: Eq a => Graph a -> [([Int],[a])] -> [([Int],[a])]
hulp (Graaf [] bgL) soFar = soFar
hulp g@(Graaf (fstN:restN) l) soFar
| elem bgraden (map fst soFar) = hulp (Graaf restN l) (mergeG fstN bgraden soFar)
| otherwise = hulp (Graaf restN l) [(bgraden,[fstN])]:soFar
where
bgraden = buurgraadKnoop g fstN
mergeG :: a -> [Int] -> [([Int],[a])] -> [([Int],[a])]
mergeG n ngraden ((gradenL,nodenL):rest)
| ngraden == gradenL = ((gradenL, sort(nodenL:n)):rest
| otherwise = mergeG n ngraden rest
解决方案
You forgot to close the parenthesis in ((gradenL, sort(nodenL:n))
.
The outher parentheses are redundant anyway, so you could simply write (gradenL, sort $ nodenL : n)
这篇关于Haskell解析错误输入`|'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文