Haskell:Num类是否“继承”Eq类?

时间:2014-04-16 17:42:04

标签: haskell

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

lucky :: Integral a => a -> String
lucky 7 = "lucky number seven!"
lucky x = "try again"

但是,当我这样做时

lucky :: Num a => a -> String
lucky 7 = "lucky number seven!"
lucky x = "try again"

我得到了

Could not deduce (Eq a) arising from literal `7'

所以,我做了

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

并且,编译器很高兴。

Num类型类不“继承”Eq类吗?

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

1 个答案:

答案 0 :(得分:10)

Haskell报告建议Num应该是EqShow的子类,但如果你在ghc中查看Num类的{{1}} ,那不是。

此更改似乎已在the source

中引入