Data.Binary
のドキュメントには、手作業でインスタンスを書くことが示されています。これを回避する方法はありますか?私はhereを見ましたが、(Template Haskellベースの)導出機構を持つ別のライブラリSerTHがありますが、そのリンクは壊れているようです。また、他の図書館を知っているなら、優れた業績は私たちにとって非常に重要です。Data.Binary(または、友人)のテンプレートHaskell/Derivingメカニズムがあります
ありがとうございます!
Data.Binary
のドキュメントには、手作業でインスタンスを書くことが示されています。これを回避する方法はありますか?私はhereを見ましたが、(Template Haskellベースの)導出機構を持つ別のライブラリSerTHがありますが、そのリンクは壊れているようです。また、他の図書館を知っているなら、優れた業績は私たちにとって非常に重要です。Data.Binary(または、友人)のテンプレートHaskell/Derivingメカニズムがあります
ありがとうございます!
ニールミッチェルDerive packageには、バイナリインスタンスを導出するためのテンプレートのhaskellマクロがあります。
あなたが他のライブラリについて尋ねられたので:
cerealデータのシリアライズライブラリGHC 7.2の新しいジェネリックのサポートと連携cereal-deriveを持っています。これは、テンプレートHaskellよりもコンパイル時のスピード上の利点があります(コンパイル時にTHが起きるのを避ける傾向があります)。SYBやUniplateのようなデータ型ジェネリックメソッドよりも実行時の速度が優れています。
シリアルはバイナリと非常に似ていますが、厳密なByteStringsを使用します。バイナリは2009年以来更新されておらず、シリアルにはIEEE-754 float format supportなどのニセティがあります。したがって、派生したい場合はバイナリに使用しない理由はありません。
穀物-導出はGPL3でかなり簡単だったを参照してください。これは、いくつかのユースケースでは問題になるかもしれません。 – user239558
いくつかのユースケースで遅延レイテンシが簡単です – daf
は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
GHC 7.2サポートこのネイティブ導出デフォルトを使用して...私はしばらく前にそれのためのコードを書き、 – alternative