我对msgpack的haskell和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
用法的一些内容?
答案 0 :(得分:9)
Haskell中的空元组()
与Python中的空元组或空列表不同。它与Python中的None
类似。 (在msgpack的上下文中)。
因此,要获得相同的结果,请将haskell程序更改为:
MP.pack (0, 2, 28, []) -- empty list
或者将python程序更改为:
f.write(msgpack.packb([0, 2, 28, None]))