Haskell:Num类是否"继承"Eq类?

jca*_*pio 5 haskell

从了解你是一个Haskell,我有:

lucky :: Integral a => a -> String
lucky 7 = "lucky number seven!"
lucky x = "try again"
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做的时候

lucky :: Num a => a -> String
lucky 7 = "lucky number seven!"
lucky x = "try again"
Run Code Online (Sandbox Code Playgroud)

我明白了

Could not deduce (Eq a) arising from literal `7'
Run Code Online (Sandbox Code Playgroud)

那么,我呢

lucky :: (Eq a, Num a) => a -> String
lucky 7 = "lucky number seven!"
lucky x = "try again"
Run Code Online (Sandbox Code Playgroud)

而且,编译器很高兴.

Num类不会"继承"Eq类吗?

说(Num a,Eq a)似乎是多余的.从Haskell 98报告中,他们有一个很好的图表(是的,视觉效果!)标准类,它确实看起来像是"继承的".http://www.haskell.org/onlinereport/basic.html

Lee*_*Lee 10

Haskell的报告建议,Num应的一个子类EqShow的,但如果你看看来源Num在GHC类,那么它是不是.

这一变化似乎已在GHC 7.4.1中引入