比特不是来自Num?

时间:2012-09-24 07:32:06

标签: haskell ghc

尝试编译数据memocombinators 0.4.3,得到以下错误:

Data/MemoCombinators.hs:119:10:
    Could not deduce (Num a) arising from a use of `IntTrie.apply'
    from the context (Ord a, Bits a)

我认为Bits曾经来自Num。也许它很糟糕并且依赖性被删除了,但现在包装已经坏了。这有什么已知的解决方案吗?也许我正在使用一个糟糕的版本?

我暂时将Num a添加到我的软件包副本中的函数签名中,但从长远来看这是不对的。

我正在使用GHC 7.6.1,基数是4.6.0.0。

1 个答案:

答案 0 :(得分:9)

它是mentioned in the changelog for GHC 7.6.1(基础4.6.0.0)。

  

Bits类不再有Num超类。

     

您可以通过以下方式制作适用于Haskell98 / Haskell2010和GHC的代码:

     
      
  • 每当您创建一个类型的Bits实例时,还要生成Num个实例,
  •   
  • 每当您为函数,实例或类提供Bits t约束时,也会给它Num t约束。
  •   

有关此决定的详情,请参阅GHC #5593mailing list discussion