Haskell全新,为什么这个函数永远循环?

Mat*_*att 1 haskell

背景:我花了不到一个星期才把Haskell弄出来,到目前为止我很开心,但是这个让我很难受.这似乎是演示我的问题的最简单的例子:

我定义了以下类型.

data AnInteger = A Integer
instance Eq AnInteger where
  a == a' = a == a'
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用它时

ghci无限循环的屏幕截图

我得到的似乎是无限循环.这里发生了什么,我没有得到?

如何更正语法以提供所需的True输出?

sep*_*p2k 8

==通过说a等于a'iff a等于运算符来定义运算符a'.从逻辑上讲,这是一个重言式.

在程序逻辑方面,它是一个无限循环,因为将==函数应用于两个参数将无限地再次应用于那些相同的参数.

你可能想做的是用来==比较你的AnIntegers中包含的整数,而不是AnIntegers本身.要做到这一点,你首先需要使用模式匹配来解开它们,如下所示:

(A a) == (A a') = a == a'
Run Code Online (Sandbox Code Playgroud)