14

我正在使用ghci,此代码部分

newtype Gold = Gold Int
    deriving (Eq, Ord, Show, Num)

将错误显示为

Can't make a derived instance of 'Num Gold':
  'Num' is not a derivable class
  Try GeneralizedNewTypeDeriving for GHC's newtype-deriving extension in the newtype declaration for 'Gold'

请提出解决方案。

4

1 回答 1

24

您只能从EqOrdEnumBounded和自动Show派生。Read为了派生其他实例,您需要GeneralizedNewtypeDeriving按照 GHCi 的建议启用扩展:

{-# LANGUAGE GeneralizedNewtypeDeriving #-}

newtype Gold = Gold Int
  deriving (Eq, Ord, Show, Num)

请注意,这{-# ... #-}不是注释,而是编译器 pragma,在这种情况下启用给定的语言扩展。  

于 2014-09-01T10:30:08.253 回答