在Haskell中将实例定义为受限类型

时间:2018-12-16 16:45:13

标签: haskell

我正在使用以下数据类型:

data Exp a =
|Const a
|Simetrico (Exp a)
|Mais (Exp a) (Exp a)
|Menos (Exp a) (Exp a)
|Mult (Exp a) (Exp a)

但是a应该是数字类型。 我会这样定义Eq

instance Eq (Exp a) where
         a == b | ... = True
                | otherwise = False

但是我无处说我的a是数字类型,所以ghci抱怨,如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

您向instance子句添加类型约束:

instance Num a => Eq (Exp a) where
         a == b | ... = True
                | otherwise = False

因此,现在您可以假定(在instance范围内,aNum类型类的实例。