无法生成Num的派生实例

Amm*_*osh 13 haskell ghci derived-instances newtype

我正在使用ghci此代码部分

newtype Gold = Gold Int
    deriving (Eq, Ord, Show, Num)
Run Code Online (Sandbox Code Playgroud)

显示错误为

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'
Run Code Online (Sandbox Code Playgroud)

请建议解决方案.

Mat*_*hid 23

您只能从派生Eq,Ord,Enum,Bounded,ShowRead自动.为了派生其他实例,您需要GeneralizedNewtypeDeriving像GHCi建议的那样启用扩展:

{-# LANGUAGE GeneralizedNewtypeDeriving #-}

newtype Gold = Gold Int
  deriving (Eq, Ord, Show, Num)
Run Code Online (Sandbox Code Playgroud)

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

  • @milleniumbug无需粗鲁.考虑到语法,OP可能会被认为是评论. (10认同)