假设我有这种数据类型:
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不同,因为我正在寻找deriving
和instance
关键字之间的对比。假定的欺骗没有提及instance
关键字。
答案 0 :(得分:6)
你不会错过任何东西; deriving
只是让编译器写出"显而易见的"你的实例。如果你自己写出这个实例,它就不会做任何事情。
好处是:(1)您不必写出实例;(2)它与任何阅读来源的人沟通实例 明显的实例(而不是阅读实例定义以确定它是否是非标准的。