haskell - 无法创建 Num 的派生实例

标签 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'

请提出解决方案。

最佳答案

您只能从 EqOrdEnumBoundedShow 派生code> 和自动读取。为了派生其他实例,您需要按照 GHCi 的建议启用 GeneralizedNewtypeDeriving 扩展:

{-# LANGUAGE GeneralizedNewtypeDeriving #-}

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

请注意,{-# ... #-} 不是注释,而是 compiler pragma ,在本例中启用给定的语言扩展。

关于haskell - 无法创建 Num 的派生实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25603641/

相关文章:

haskell - Haskell中 `data`和 `newtype`之间的区别

haskell - 为什么 "Níðhöggr"的长度是9?

haskell - 仅使用比较运算符计算列表中每个元素的频率

list - 使用 'nub' 函数需要什么?

haskell - GHCi 中的多行命令

haskell - 加载文件时 WinGHCi 总是抛出异常

haskell - 如何运行通过命令参数传递给解释器的 haskell 代码?

haskell : GLUt32 error message when running my program

scala - 为什么值类仅限于 AnyVal?

haskell - Flip 数据类型的仿函数类型变量