数据类型实例?

时间:2016-09-22 16:50:43

标签: haskell types

我是否正确地说下面是使用数据类型实例的一个例子(一个单调乏味的简单)?即允许您为不同的数据定义不同的行为。

如果没有,这些怎么用?

代码:

data HealthIndicators = Weight | Age | BloodPressure deriving (Show)
data IrrelevantIndicators = Starsign | BirthMonth | IQ deriving (Show)

class IndicatorTest a where
   indicatortest :: a -> Bool

instance IndicatorTest HealthIndicators where
   indicatortest Weight = True
   indicatortest Age = True
   indicatortest BloodPressure = True

instance IndicatorTest IrrelevantIndicators where
   indicatortest Starsign = False
   indicatortest BirthMonth = False
   indicatortest IQ = False

1 个答案:

答案 0 :(得分:0)

首先,您的实例不需要列出所有案例,因为它们没有任何区别。你可以写

instance IndicatorTest HealthIndicators where
   indicatortest _ = True

或者如果您愿意,第二行可以是

   indicatortest = const True

如果您正在编写如下函数,这可能很有用:

foo :: (IndicatorTest h) => h -> String

并且您需要根据类型h是否为有用指标而改变结果。但在这种情况下,你可能会在IndicatorTest类中使“foo”成为一个函数。

在不知道你实际想要实现的目标的情况下,进一步提出建议有点困难。