我對上模運算工作的項目。 我在調用函數時遇到了模式匹配問題。 這裏是Modular類型的構造函數。 madd帶兩個類型Modular的實例,並且設想將它們添加回來的類型Modular。非詳盡的模式匹配
data Modular = Mod Integer Integer deriving Show
instance (Eq Modular) where
(Mod a1 m1) == (Mod a2 m2) = m1==m2 && mod (a1-a2) m1 == 0
-- Adds two modular numbers of the same modulus
madd :: Modular -> Modular -> Modular
madd (Mod a1 m1) (Mod a2 m2) | m1 == m2 = Mod (mod (a1+a2) m1) m1
任何人都可以幫助我,爲什麼我會得到非詳盡的模式匹配? 錯誤是這樣的:
Warning: Pattern match(es) are non-exhaustive
In an equation for `madd':
Patterns not matched: (Mod _ _) (Mod _ _)
順便說一句,我使用的Eclipse IDE中的Haskell插件。
如果'm1/= m2'會出現什麼情況? – tom
湯姆的職位,作爲一個答案,讓mehdix_可以關閉問題:-) – kaan
@湯姆,你能解釋一下嗎?你在上面提到的情況會發生什麼? –