msgpack:haskell&python

ert*_*ion 4 python haskell msgpack

我对msgpack的haskellpython客户端之间的差异感到困惑.这个:

import Data.MessagePack as MP
import Data.ByteString.Lazy as BL

BL.writeFile "test_haskell" $ MP.pack (0, 2, 28, ())
Run Code Online (Sandbox Code Playgroud)

还有这个:

import msgpack

with open("test_python", "w") as f:
    f.write(msgpack.packb([0, 2, 28, []]))
Run Code Online (Sandbox Code Playgroud)

给我不同的文件:

$ diff test_haskell test_python
Binary files test_haskell and test_python differ
Run Code Online (Sandbox Code Playgroud)

谁能解释一下,我做错了什么?也许我误解了一些关于ByteString用法的事情?

fal*_*tru 9

空的元组()在Haskell是不喜欢在Python空的元组或空列表.它与NonePython 类似.(在msgpack的上下文中).

因此,要获得相同的结果,请将haskell程序更改为:

MP.pack (0, 2, 28, [])  -- empty list
Run Code Online (Sandbox Code Playgroud)

或者将python程序更改为:

f.write(msgpack.packb([0, 2, 28, None]))
Run Code Online (Sandbox Code Playgroud)

看演示.

  • 非常感谢,特别是对于演示! (2认同)