Data.Binary
ドキュメントには、手動でインスタンスを作成することが示されています。これを回避する方法はありますか?(テンプレート Haskell ベースの) 派生メカニズムを持つ別のライブラリ、SerTH があるのを見ましたが、それへのリンクは壊れているようです。また、他のライブラリを知っている場合は、優れたパフォーマンスが重要です。
前もって感謝します!
Data.Binary
ドキュメントには、手動でインスタンスを作成することが示されています。これを回避する方法はありますか?(テンプレート Haskell ベースの) 派生メカニズムを持つ別のライブラリ、SerTH があるのを見ましたが、それへのリンクは壊れているようです。また、他のライブラリを知っている場合は、優れたパフォーマンスが重要です。
前もって感謝します!
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
あなたが他の図書館について尋ねたので:
シリアルデータシリアル化ライブラリにはcereal-deriveがあり、GHC7.2の新しいジェネリックサポートで動作します。これには、テンプレートHaskellよりもコンパイル時の速度が有利であり(コンパイルがさらに遅くなるという理由だけで、最近はTHを避ける傾向があります)、SYBやUniplateなどのデータ型汎用メソッドよりも実行時の速度が有利です。
シリアルはバイナリに非常に似ていますが、厳密なByteStringsを使用します。バイナリは2009年以降更新されておらず、シリアルにはIEEE-754浮動小数点形式のサポートなどの優れた機能があるため、派生したい場合にバイナリで使用しない理由はわかりません。
Neil Mitchells Deiveパッケージには、バイナリ インスタンスを導出するためのテンプレート haskell マクロがあります。