我对msgpack的哈斯克尔和python客户机之间的差异感到困惑。这是:
import Data.MessagePack as MP
import Data.ByteString.Lazy as BL
BL.writeFile "test_haskell" $ MP.pack (0, 2, 28, ())这是:
import msgpack
with open("test_python", "w") as f:
f.write(msgpack.packb([0, 2, 28, []]))给我不同的文件:
$ diff test_haskell test_python
Binary files test_haskell and test_python differ有人能解释我做错了什么吗?也许我误解了ByteString的使用?
发布于 2014-09-20 16:19:14
Haskell中的空元组()不像Python中的空元组或空列表。它类似于Python中的None。(在msgpack上下文中)。
因此,要获得相同的结果,请将haskell程序更改为:
MP.pack (0, 2, 28, []) -- empty list或者将python程序更改为:
f.write(msgpack.packb([0, 2, 28, None]))看个演示。
https://stackoverflow.com/questions/25950447
复制相似问题