我的函数paralellenCheck
每当我称之为抱怨非详尽模式时就会抛出异常
paralellenCheck
定义如下:
paralellenCheck :: (Eq a, Num a ) => [a] -> [a] -> Bool
paralellenCheck [] [] = True
paralellenCheck [_] [] = True
paralellenCheck [] [_] = True
paralellenCheck (x:xs) (y:ys)
| intervall `elem` [0,5,7,12] = False
| not $ paralellenCheck (x:xs) ys = False
| not $ paralellenCheck xs (y:ys) = False
| otherwise = True
where intervall = abs (x - y)
在GHCI中使用-Wall运行该函数只返回
<interactive>:10:1:
Warning: Defaulting the following constraint(s) to type `Integer'
(Eq a0)
arising from a use of `paralellenCheck' at <interactive>:10:1-15
(Num a0)
arising from a use of `paralellenCheck' at <interactive>:10:1-15
In the expression: paralellenCheck [] [2, 3, 4, 5]
In an equation for `it': it = paralellenCheck [] [2, 3, 4, ....]
<interactive>:10:1:
Warning: Defaulting the following constraint(s) to type `Integer'
(Eq a0)
arising from a use of `paralellenCheck' at <interactive>:10:1-15
(Num a0)
arising from a use of `paralellenCheck' at <interactive>:10:1-15
In the expression: paralellenCheck [] [2, 3, 4, 5]
In an equation for `it': it = paralellenCheck [] [2, 3, 4, ....]
*** Exception: haskelltest.hs:(6,1)-(14,31): Non-exhaustive patterns in function paralellenCheck
我对haskell很新,而且很困惑。我认为与[_] []
和[] [_]
的模式匹配应解决此问题。
答案 0 :(得分:7)
[_]
表示“任何一个元素的列表”。你似乎打算“任何列表”。现在,[] (a:b:[])
例如不匹配。使用_
获取任何列表。