字节串 - 包版本号不匹配

时间:2015-05-19 15:32:57

标签: haskell ghc

我正在尝试在我的系统上运行hafka。对于相同的元素类型Data.ByteString.Internal.ByteString,由于版本号不匹配,haskell会引发错误。

Couldn't match expected type ‘bytestring-0.10.4.0:Data.ByteString.Internal.ByteString’
                with actual type ‘B.ByteString’
    NB: ‘bytestring-0.10.4.0:Data.ByteString.Internal.ByteString’
          is defined in ‘Data.ByteString.Internal’
              in package ‘bytestring-0.10.4.0’
        ‘B.ByteString’
          is defined in ‘Data.ByteString.Internal’
              in package ‘bytestring-0.10.6.0’

在我的系统上,当我运行ghc-pkg list | grep bytestring时,它显示,                                                                         bytestring-0.10.4.0

ghc未使用版本化bytestring-0.14.0的软件包。 haskell在哪里获得实际的类型版本 - bytestring-0.10.6.0

我没有看到任何跨库版本检查类型安全的语言。为什么haskell会这样做?

1 个答案:

答案 0 :(得分:3)

您可能正在使用沙盒,在这种情况下,您可以查看沙盒中的哪些包,例如

timeout()
  

我还没有看到任何跨库版本检查类型安全的语言。为什么haskell会这样做?

没有先验的理由相信包的一个版本中名为cabal exec ghc-pkg list bytestring 的类型在语义上与包的另一个版本中具有相同名称的类型相同。作为一个保守的规则,GHC根本不允许混合。注意,检查两种类型在语义上是否相同并不仅限于查看其数据的表示;还需要比较它们的类型类实例,这是一个明显不可判定的问题。有人可能会想到,未来的GHC会尝试在这方面进行更多的分析,但这并不是一个迫切的需求 - 通常,简单地针对每个依赖项的一个且仅一个版本构建程序包并不难。 p>