Sco*_*ott 1 serialization haskell types instance
来自Data.Binary:
instance (Binary e) => Binary (IntMap.IntMap e) where
put = put . IntMap.toAscList
get = liftM IntMap.fromDistinctAscList get
Run Code Online (Sandbox Code Playgroud)
我认为这意味着任何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'
Run Code Online (Sandbox Code Playgroud)
我如何使用提供的实例?
我认为这意味着任何
IntMap (Binary e)类型都是可序列化的,但它不会:
它确实(除了它应该读取的nitpick,IntMap e如果有的话,任何都是可序列化的instance Binary e).
Prelude Data.IntMap Data.Binary> encode (fromList [] :: IntMap Int)
"\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL"
Run Code Online (Sandbox Code Playgroud)
您几乎可以肯定的错误消息意味着IntMap您使用的错误消息不是IntMap来自containers您binary构建的包,而是来自其他版本.IntMap来自不同版本的s containers是不同的类型,而Binary实例仅用于binary构建的确切版本.
您可能安装了containers自安装以来的较新版本binary.
使用containers版本binary构建,通过-package在命令行上为ghci 指定标志,以及Cabal用于编译.