我对上模运算工作的项目。 我在调用函数时遇到了模式匹配问题。 这里是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
@汤姆,你能解释一下吗?你在上面提到的情况会发生什么? –