Haskell 派生typeclass和创建实例之间的区别
假设我有以下数据类型:Haskell 派生typeclass和创建实例之间的区别,haskell,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 _ == _ =
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
我错过了什么
注意
这个问题不同于,因为我在寻找
派生
和实例
关键字之间的对比。假定的dupe没有提到实例
关键字。您没有遗漏任何内容<代码>派生就是让编译器为您写出“显而易见”的实例。如果你自己写了这个实例,它不会做任何你做不到的事情
好处是(1)您不必写出实例,(2)它向任何阅读源代码的人传达实例是显而易见的(而不必阅读实例定义来确定它是否非标准).@Ben,这应该是个答案。@BalinKingOfMoria我把它提升到了one@Ben完美的对这个好答案投赞成票:)有一个例外:
Typeable
。其实例只能派生。