在下面的代码中,Haskell抱怨
Non-exhaustive patterns in function prime'
prime :: Int -> [Int]
prime x = prime' [2..x] where
prime' (p:ps)= p : prime' [x | x <- ps, mod x p > 0 && prime'' x [2..div x 2]]
prime'' _ [] = True
prime'' n (x:xs)
| mod n x == 0 = False
| otherwise = prime'' n xs
prime' []=[]
我找不到自己的错误。有人可以解释为什么会发生这种情况,这意味着什么?
答案 0 :(得分:6)
压痕。最后一行定义了名为prime'
的另一个函数。因此,prime\prime'
(prime
的where子句中的定义)不具有空列表的匹配模式。
此外,你的缩进遍布各地。你还mix tabs and spaces吗?