尝试学习如何使用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]
答案 0 :(得分:7)
看起来你的Cabal套餐一团糟;您安装了bytestring
个软件包的多个版本,并且它们存在冲突。最有可能的情况是,binary
包取决于导入bytestring
时获得的Data.ByteString.Lazy
的不同版本。
最简单的方法是通过清除Cabal目录从头开始。在Windows上,这些目录似乎是C:\Program Files\Haskell
和C:\Documents And Settings\username\Application Data\cabal
。但是,我认为不加区别地清除前者会完全卸载Haskell平台,所以要小心;另一方面,最简单的事情可能是卸载Haskell平台并重新开始。 (此外,您可能希望首先复制config
文件,以避免覆盖您的Cabal配置。)
cabal-dev
对于保持这样的问题是有用的;它在自己的沙箱中构建每个程序,因此包问题的影响是本地化的,可以轻松清理。不过,我不知道它在Windows上的效果如何。