2012-01-03 9 views
7

Data.Binaryのドキュメントには、手作業でインスタンスを書くことが示されています。これを回避する方法はありますか?私はhereを見ましたが、(Template Haskellベースの)導出機構を持つ別のライブラリSerTHがありますが、そのリンクは壊れているようです。また、他の図書館を知っているなら、優れた業績は私たちにとって非常に重要です。Data.Binary(または、友人)のテンプレートHaskell/Derivingメカニズムがあります

ありがとうございます!

+0

GHC 7.2サポートこのネイティブ導出デフォルトを使用して...私はしばらく前にそれのためのコードを書き、 – alternative

答えて

5

ニールミッチェルDerive packageには、バイナリインスタンスを導出するためのテンプレートのhaskellマクロがあります。

5

あなたが他のライブラリについて尋ねられたので:

cerealデータのシリアライズライブラリGHC 7.2の新しいジェネリックのサポートと連携cereal-deriveを持っています。これは、テンプレートHaskellよりもコンパイル時のスピード上の利点があります(コンパイル時にTHが起きるのを避ける傾向があります)。SYBやUniplateのようなデータ型ジェネリックメソッドよりも実行時の速度が優れています。

シリアルはバイナリと非常に似ていますが、厳密なByteStringsを使用します。バイナリは2009年以来更新されておらず、シリアルにはIEEE-754 float format supportなどのニセティがあります。したがって、派生したい場合はバイナリに使用しない理由はありません。

+1

穀物-導出はGPL3でかなり簡単だったを参照してください。これは、いくつかのユースケースでは問題になるかもしれません。 – user239558

+0

いくつかのユースケースで遅延レイテンシが簡単です – daf

関連する問題