0

我在haskell中編寫了一個函數來檢查是否某個元素是列表元素。模式匹配是非窮盡的,即使我已經指定了模式

我有以下代碼:

elementOf :: Eq a => a ->[a] -> Bool 
elementOf _ [] = False 
elememtOf x (y:ys) = (x==y) || elementOf x ys 

,但我收到以下錯誤:

Pattern match(es) are non-exhaustive 
In an equation for ‘elememtOf’: Patterns not matched: _ [] 

我不明白爲什麼我得到這樣的錯誤,因爲我有一個案例_ [ ]。

任何人都可以解釋我要去哪裏錯了嗎?

謝謝!

+0

我推薦用'-Wall'編譯,它會在編譯時通知你非窮舉模式以及沒有類型簽名的函數 – jberryman

回答

6

您錯誤地將最後一種模式中的函數名稱拼寫爲elememtOf而不是elementOf