从了解你是一个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