有人可以修复以下Data.Binary示例代码吗?

时间:2012-04-14 02:15:38

标签: haskell

尝试学习如何使用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]

1 个答案:

答案 0 :(得分:7)

看起来你的Cabal套餐一团糟;您安装了bytestring个软件包的多个版本,并且它们存在冲突。最有可能的情况是,binary包取决于导入bytestring时获得的Data.ByteString.Lazy的不同版本。

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

cabal-dev对于保持这样的问题是有用的;它在自己的沙箱中构建每个程序,因此包问题的影响是本地化的,可以轻松清理。不过,我不知道它在Windows上的效果如何。