0
Begginer Haskell问题。 其实我发现非常相似的问题Haskell error: "non-exhaustive patterns"另一个'功能非穷举模式'
交互的shell:
Prelude> merge [] [] = []
Prelude> merge (x:xs) [] = x:xs
Prelude> merge [] (y:ys) = y:ys
Prelude> -- merge (x:xs) (y:ys)
Prelude> merge [][]
Exception
Prelude> merge [0][]
Exception: <interactive>:3:1-22: Non-exhaustive patterns in function merge
Prelude> merger [][0]
OK
事实上例外也存在于非交互式模式
main = do
print (merge [1,2,3] [])
print (merge [] [1,2,3])
print (merge [] [])
merge :: (Ord a) => [a] -> [a] -> [a]
merge (x:xs) [] = x:xs
merge [] (y:ys) = y:ys
merge [][] = []
但是这取决于particulas合并的特殊情况下的顺序出现错误。 我不知道为什么会发生这种情况。提前致谢。
不幸的是,GHC的最新版本并让用户忽略'let',所以每一行都会覆盖前面的一行 – Alec
@Alec:TIL。谢谢! – pyon
请注意,您不仅纠正了语法错误,还更正了代码。由于没有'merge(x:xs)(y:ys)= ..'case – user2407038