我下面Haskell的維基頁面上的建議:Performance/Data types,以提高我的代碼的性能,但是當我改變轉換枚舉爲int樣類型在Haskell
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合作過,我該怎麼做n顏色轉換爲Enum類型?我是否必須實現它定義的所有功能?我以爲他們都是在你上課的時候實施的。
引用GHC的信息:'嘗試-XGeneralizedNewtypeDeriving for GHC的newtype-deriving extension'。 –