是否有Data.Binary的模板Haskell /派生机制(或朋友?)

时间:2012-01-03 15:39:35

标签: serialization haskell binary-data deriving

Data.Binary文档显示手动编写实例。有没有解决的办法?我看到here还有另一个库,SerTH,它有一个(基于模板Haskell的)派生机制,但是它的链接似乎被打破了。此外,如果您了解其他库,那么良好的性能对我们至关重要。

提前谢谢!

3 个答案:

答案 0 :(得分:6)

请参阅http://hackage.haskell.org/packages/archive/binary/0.7.1.0/doc/html/Data-Binary.html#g:3

 {-# LANGUAGE DeriveGeneric #-}

 import Data.Binary
 import GHC.Generics (Generic)

 data Foo = Foo
          deriving (Generic)

 -- GHC will automatically fill out the instance
 instance Binary Foo

答案 1 :(得分:5)

Neil Mitchells Derive package有一个用于派生二进制实例的模板haskell宏。

答案 2 :(得分:5)

由于您询问了其他库:

cereal数据序列化库有cereal-derive,它与GHC 7.2中的新Generics支持一起使用。这比模板Haskell具有编译时速度优势(我现在倾向于避免TH,因为它使编译速度更慢)和运行时速度优于SYB和Uniplate等数据类型泛型方法。

谷类食品非常类似于二元食品,但使用严格的ByteStrings;自2009年以来,二进制文件还没有更新,而谷物有IEEE-754 float format support这样的细节,所以如果你想要推导,我看不出任何理由不使用二进制文件。