程序具有以下导入:
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更新或软件包安装。如何调试和修复此问题?
答案 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。在构建之前,您仍需要重新配置,并且可能需要再次安装一些依赖项才能正常转换。