更新电缆后输入不匹配?

时间:2015-09-18 17:26:32

标签: haskell cabal

程序具有以下导入:

import Pipes.Network.TCP
import Pipes
import Pipes.Core
import qualified Data.ByteString.Char8 as C

编译失败如下:

Couldn't match expected type `bytestring-0.9.2.1:Data.ByteString.Internal.ByteString'
            with actual type `C.ByteString'
Expected type: Proxy
                 Int
                 bytestring-0.9.2.1:Data.ByteString.Internal.ByteString
                 ()
                 b0
                 m0
                 ()
  Actual type: Proxy Int C.ByteString () C.ByteString IO ()

我可以更具体地了解代码,但看起来这与代码无关 - 而是一些突发奇想。也许,我导入的Pipes被视为使用与使用限定名称导入的ByteString不同的flatMap

用于编译的程序不久前(我有它的工作可执行文件),但现在它停止了,我怀疑可能有一些cabal更新或软件包安装。如何调试和修复此问题?

1 个答案:

答案 0 :(得分:2)

假设您的程序是使用cabal构建的,则应重新配置它。这可能会突出显示其他问题,例如需要重新安装或破坏依赖关系树的其他部分的依赖关系。解决这个问题的“旧方法”是逐渐cabal install越来越多的事情,直到依赖解算器同意它为止,例如。

$ cabal install .
# complains that reinstalls might break lens
$ cabal install . lens
# complains that reinstalls might break bytestring
$ cabal install . lens bytestring
# complains that reinstalls might break X
$ cabal install . lens bytestring X

...等。 “新方式”是使用no-reinstall cabal。在构建之前,您仍需要重新配置,并且可能需要再次安装一些依赖项才能正常转换。