我只是在学习Haskell,并且仍在努力弄清楚事情是如何运作的.
所以我正在创建一个可以包含Int和的混合列表类Char.
data Algebra = Empty
| Nmbr Int Algebra
| Smbl Char Algebra
Run Code Online (Sandbox Code Playgroud)
然后我尝试将它作为一个实例 Eq
instance Eq Algebra where
Empty == Empty = True
(Nmbr x xl) == (Nmbr y yl) = (x == y) && (xl==yl)
(Smbl x xl) == (Smbl y yl) = (x == y) && (xl==yl)
_ == _ = False
Run Code Online (Sandbox Code Playgroud)
我得到一个 Ambiguous occurrence ==编译错误.它不能告诉之间的区别Main.==和Prelude.==.如果我手动更换所有==有Main.==或Prelude.==然后它编译罚款.
我不明白为什么编译器在这里遇到这么多困难.x并y明确定义为 …