我在Haskell中创建了一个新类Eqa
class Eqa a where
(=~) :: a -> a -> Bool
(/~) :: a -> a -> Bool
并希望从Prelude中定义(=~)
与(==)
相同。所以我试过
instance Eqa Int where
x=~y = x==y
x/~y = x/=y
但这仅适用于Int
(当然)。
如何更改我的代码,使用所有数字类型?
答案 0 :(得分:2)
为什么不写
(=~) :: Num a => a -> a -> Bool
x=~y = x==y
如果您实际上并不需要针对不同类型的代码不同,为什么还需要一个类?
答案 1 :(得分:-1)
您所要做的就是将a
绑定到Num a
或
instance Num a => Eqa a where
x=~y = x==y
x/~y = x/=y
有关详细信息,请查看Numeric Types subsection of Real World Haskell以了解哪个类与每种数字类型相关。