7

Data.Binaryドキュメントには、手動でインスタンスを作成することが示されています。これを回避する方法はありますか?(テンプレート Haskell ベースの) 派生メカニズムを持つ別のライブラリ、SerTH があるのを見ましたが、それへのリンクは壊れているようです。また、他のライブラリを知っている場合は、優れたパフォーマンスが重要です。

前もって感謝します!

4

3 に答える 3

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
于 2013-05-02T00:14:16.643 に答える
5

あなたが他の図書館について尋ねたので:

シリアルデータシリアル化ライブラリにはcereal-deriveがあり、GHC7.2の新しいジェネリックサポートで動作します。これには、テンプレートHaskellよりもコンパイル時の速度が有利であり(コンパイルがさらに遅くなるという理由だけで、最近はTHを避ける傾向があります)、SYBやUniplateなどのデータ型汎用メソッドよりも実行時の速度が有利です。

シリアルはバイナリに非常に似ていますが、厳密なByteStringsを使用します。バイナリは2009年以降更新されておらず、シリアルにはIEEE-754浮動小数点形式のサポートなどの優れた機能があるため、派生したい場合にバイナリで使用しない理由はわかりません。

于 2012-01-03T18:10:31.337 に答える
5

Neil Mitchells Deiveパッケージには、バイナリ インスタンスを導出するためのテンプレート haskell マクロがあります。

于 2012-01-03T16:05:11.397 に答える