来自Data.Binary:
instance (Binary e) => Binary (IntMap.IntMap e) where
put = put . IntMap.toAscList
get = liftM IntMap.fromDistinctAscList get
我认为这意味着任何IntMap (Binary e)
类型都是可序列化的,但它不会:
Data.Binary Data.IntMap> encode $ ((fromList [])::IntMap Int)
<interactive>:12:1:
No instance for (Binary (IntMap Int))
arising from a use of `encode'
如何使用提供的实例?
答案 0 :(得分:6)
我认为这意味着任何
IntMap (Binary e)
类型都是可序列化的,但它不会:
确实如此(除了应该阅读的词组,如果有IntMap e
,任何instance Binary e
都是可序列化的。
Prelude Data.IntMap Data.Binary> encode (fromList [] :: IntMap Int)
"\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL"
您几乎可以肯定的错误消息表示您使用的IntMap
不是containers
所构建的binary
包中的IntMap
,但是从另一个版本。不同版本的IntMap
中的containers
是不同的类型,Binary
实例仅适用于使用的binary
版本。
自您安装containers
以来,您可能安装了较新版本的binary
。
使用构建的containers
版本binary
,在命令行上为ghci指定-package
标志,并使用Cabal
进行编译。