我正忙着练习" Typeclasses" Haskell Book的一章,我解决了以下问题:
data TisAnInteger =
TisAn Integer
instance Eq TisAnInteger where
(==) (TisAn x) (TisAn y) = x == y
这样我就可以在GHCi REPL中使用它了:
λ> TisAn 9 == TisAn 9
True
λ> TisAn 9 == TisAn 8
False
但是在玩它的同时并且问"如果是什么?"问题,我已经意识到以下编译:
data TisAnInteger =
TisAn Integer
instance Eq TisAnInteger where
(==) x y = x == y
当我尝试在GHCi中运行类似的东西时:
λ> TisAn 9 == TisAn 8
Interrupted.
λ> TisAn 9 == TisAn 9
Interrupted.
好Interrupted.
因为我在几秒钟之后点击Ctrl+C
,GHCi没有打印任何内容。
我试图理解两件事:
对我来说,任何提示,指向文档等等,以便我能加深对上述现象的理解?
答案 0 :(得分:9)
它只是进入一个无限循环。您将(==) x y
定义为x == y
,相当于...... (==) x y
。好像你已经说过f(x) = f(x)
。