我遵循 Haskell 的 Wiki 页面上的建议:性能/数据类型以提高我的代码的性能,但是当我改变时
data Color = Yellow | Red | Green | Blue | Empty deriving (Show, Eq)
至
newtype Color = Color Int deriving (Eq,Ord,Enum)
(yellow:red:green:blue:empty:_) = [Color 1 ..]
正如文章中所建议的,GHC 说:
Can't make a derived instance of `Enum Color':
`Color' must be an enumeration type
(an enumeration consists of one or more nullary, non-GADT constructors)
Try -XGeneralizedNewtypeDeriving for GHC's newtype-deriving extension
In the newtype declaration for `Color'
我没有太多使用 Enums,如何将 Color 转换为 Enum 类型?我必须实现它定义的所有功能吗?我认为当您派生该类时它们都已实现。