python - msgpack: haskell 和 python

标签 python haskell msgpack

我对 haskell 之间的差异感到困惑和 python msgpack 的客户端。 这:

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 的用法?

最佳答案

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.

关于python - msgpack: haskell 和 python ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25950447/

相关文章:

Python 逻辑或运算符行为奇怪

javascript - 对 Flask 中创建的表中的列进行排序

haskell - 如何读取 Haskell 的 `ap zip tail` 表示 `\x -> zip x (tail x)` ?

haskell - haskell 中的 "Open Data Types and Open Functions"

c++ - Msgpack 中是否有版本控制功能

python - 允许用户在 Heroku 上为 Django 应用程序使用自定义域

python - 如何显示在类中创建的矩形?

haskell - 你如何在 Haskell 中定义状态?

python - 分布式1.21.8需要msgpack,没有安装

python - MessagePack 和消息帧