【发布时间】:2015-09-06 22:09:36
【问题描述】:
我在 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(当然)。
如何更改我的代码以使其适用于所有数字类型?
【问题讨论】:
-
如何更改我的代码以使其适用于所有数字类型?“this”在您的句子中到底指的是什么?
-
使用我定义的实例,我只能比较 Int 的类型,但我想比较所有数字类型,即 float、Integer、...
-
这不是你能真正做到的。 Num 类型类不提供
(==)。您可以说服 GHC 接受具有正确语言编译指示的instance Num a => Eqa a的定义,但这很荒谬,实际上您将无法使用它。
标签: haskell types constraints instance