无法创建Num的派生实例

时间:2014-09-01 10:20:50

标签: haskell ghci newtype derived-instances

我正在使用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'

请建议解决方案。

1 个答案:

答案 0 :(得分:23)

您只能自动从EqOrdEnumBoundedShowRead派生。为了派生其他实例,您需要启用GeneralizedNewtypeDeriving扩展,如GHCi建议的那样:

{-# LANGUAGE GeneralizedNewtypeDeriving #-}

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

请注意,{-# ... #-}不是评论,而是compiler pragma,在这种情况下启用给定的语言扩展名。