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