假设我有这样的数据类型:
data TrafficLight = Red | Yellow | Green deriving (Eq)
它与创建的实例有何不同 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 关键字。假定的受骗者没有提到 例子 关键字。
deriving
instance
例子
你没有错过任何东西; deriving 只是让编译器为您写出“显而易见”的实例。如果你自己写下实例,它不会做任何你做不到的事情。
好处是:(1)您不必写出实例,(2)它可以与任何阅读该实例的源代码的人进行通信 是 显而易见的是(而不是必须阅读实例定义来确定它是否是非标准的)。