2

尝试学习如何使用 Data.Binary 并在此处遇到障碍:

http://www.haskell.org/haskellwiki/Serialisation_and_compression_with_Data_Binary

D:\Projects\haskell\serialize\ex1.hs:114:26:
    Couldn't match expected type `bytestring-0.9.1.10:Data.ByteString.Lazy.Internal.ByteString'
                with actual type `L.ByteString'
    Expected type: Int
                   -> bytestring-0.9.1.10:Data.ByteString.Lazy.Internal.ByteString
      Actual type: Int -> L.ByteString
    In the return type of a call of `toByteString'
    In the second argument of `(.)', namely `toByteString f'

D:\Projects\haskell\serialize\ex1.hs:122:21:
    Couldn't match expected type `L.ByteString'
                with actual type `bytestring-0.9.1.10:Data.ByteString.Lazy.Internal.ByteString'
    In the first argument of `L.length', namely `fs'
    In the first argument of `(+)', namely `L.length fs'
    In the first argument of `(==)', namely `L.length fs + L.length is'
[Finished]
4

1 回答 1

7

看起来你的阴谋集团包裹一团糟;您安装了多个版本的bytestring软件包,并且它们相互冲突。最可能的情况是该binary包依赖于与bytestring您在导入时获得的版本不同的版本Data.ByteString.Lazy

最简单的做法可能是从头开始清除您的 Cabal 目录。在 Windows 上,这些目录似乎是C:\Program Files\Haskell和. 但是,我认为不加选择地清除前者会完全卸载 Haskell 平台,所以要小心;另一方面,最简单的方法可能是卸载 Haskell 平台并重新开始。(此外,您可能需要先复制文件,以避免覆盖您的 Cabal 配置。)C:\Documents And Settings\username\Application Data\cabalconfig

cabal-dev有助于将此类问题隔离开来;它在自己的沙箱中构建每个程序,从而使包问题的影响本地化并且可以轻松清理。不过,我不知道它在 Windows 上的效果如何。

于 2012-04-14T02:20:05.603 回答