2

MessagePack是一种二进制序列化格式,显然可以从 Haskell 和 Python 中使用,我需要在我的项目中混合使用这些语言。

我需要序列化的结构相当简单:

data Citation = Citation {
    sourceDocument :: Document,
    targetDocument :: Document,
    links :: [ Reference ]
}

type Reference = (Int, Int)

data Document = Document {
    words :: [ ByteString ],
    wordNums :: [ Int ]
}

但我不知道从哪里开始。显然,MessagePack 的库支持某种派生机制,通过使“文档”自动成为 OBJECT 的实例,可以轻松完成上述操作,但我尝试调用自动派生到目前为止都失败了......

你怎么看?

这是库的链接:http ://hackage.haskell.org/package/msgpack-0.7.1.5 这里是一些示例的链接,根据上述版本的文档,这些都不起作用:

  1. http://wiki.msgpack.org/display/MSGPACK/QuickStart+for+Haskell
4

1 回答 1

3

我不熟悉 msgpack,但猜测这样的东西应该可以工作。

{-# LANGUAGE TemplateHaskell #-}

import Data.MessagePack.Derive

-- I don't know which of these lines you need
-- I also don't know whether the True should actually be False
$(deriveObject True ''Document)
$(derivePack True ''Document)
$(deriveUnpack True ''Document)

(nb 通常,向我们展示您尝试过的无效代码会很有帮助,而不是让我们猜测您的尝试可能因为您没有启用TemplateHaskell或其他什么而无效。)

于 2013-03-13T12:25:22.693 回答