msgpack:haskell&蟒蛇

时间:2014-09-20 15:40:26

标签: 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, ())

和此:

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用法的一些内容?

1 个答案:

答案 0 :(得分:9)

Haskell中的空元组()与Python中的空元组或空列表不同。它与Python中的None类似。 (在msgpack的上下文中)。

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

MP.pack (0, 2, 28, [])  -- empty list

或者将python程序更改为:

f.write(msgpack.packb([0, 2, 28, None]))

See a demo.

相关问题