派生类型类和创建实例之间的区别

时间:2016-01-28 02:50:08

标签: haskell

假设我有这种数据类型:

data TrafficLight = Red | Yellow | Green deriving (Eq)

与创建Eq的实例有什么不同:

data TrafficLight = Red | Yellow | Green

instance Eq TrafficLight where
    Red == Red = True  
    Green == Green = True  
    Yellow == Yellow = True  
    _ == _ = False 

我在这里缺少什么?

注意

此问题与assumed duplicate不同,因为我正在寻找derivinginstance关键字之间的对比。假定的欺骗没有提及instance关键字。

1 个答案:

答案 0 :(得分:6)

你不会错过任何东西; deriving只是让编译器写出"显而易见的"你的实例。如果你自己写出这个实例,它就不会做任何事情。

好处是:(1)您不必写出实例;(2)它与任何阅读来源的人沟通实例 明显的实例(而不是阅读实例定义以确定它是否是非标准的。