首页 > 解决方案 > 在 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

但我没有说 mya是数字类型,所以 ghci 抱怨,我该如何解决这个问题?

标签: haskell

解决方案


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

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

所以现在你可以假设(在 的范围内instance)它a是类型类的一个实例Num


推荐阅读