我是否正确地说下面是使用数据类型实例的一个例子(一个单调乏味的简单)?即允许您为不同的数据定义不同的行为。
如果没有,这些怎么用?
代码:
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
答案 0 :(得分:0)
首先,您的实例不需要列出所有案例,因为它们没有任何区别。你可以写
instance IndicatorTest HealthIndicators where
indicatortest _ = True
或者如果您愿意,第二行可以是
indicatortest = const True
如果您正在编写如下函数,这可能很有用:
foo :: (IndicatorTest h) => h -> String
并且您需要根据类型h
是否为有用指标而改变结果。但在这种情况下,你可能会在IndicatorTest
类中使“foo”成为一个函数。
在不知道你实际想要实现的目标的情况下,进一步提出建议有点困难。