Есть ли шаблон Haskell / механизм получения для Data.Binary (или друзья?)
Data.Binary
документация показывает написание экземпляра от руки. Это можно обойти? Я видел здесь, что есть еще одна библиотека, SerTH, которая имеет механизм получения (на основе Template Haskell), но ссылка на нее кажется неработающей. Кроме того, если вы знаете другие библиотеки, для нас очень важна хорошая производительность.
Заранее спасибо!
3 ответа
См. http://hackage.haskell.org/packages/archive/binary/0.7.1.0/doc/html/Data-Binary.html
{-# LANGUAGE DeriveGeneric #-}
import Data.Binary
import GHC.Generics (Generic)
data Foo = Foo
deriving (Generic)
-- GHC will automatically fill out the instance
instance Binary Foo
Поскольку вы спрашивали о других библиотеках:
В библиотеке сериализации данных о злаках есть функция-злак, которая работает с новой поддержкой Generics в GHC 7.2. Это имеет преимущество в скорости компиляции по сравнению с Template Haskell (в наши дни я стараюсь избегать TH только потому, что это делает компиляцию еще медленнее) и преимущество в скорости выполнения по сравнению с универсальными методами типа данных, такими как SYB и Uniplate.
cereal очень похож на двоичный, но использует строгие строки ByteStrings; Двоичный файл не обновлялся с 2009 года, и в зерновых есть такие тонкости, как поддержка формата с плавающей запятой IEEE-754, поэтому я не вижу причин, чтобы не использовать его над двоичным, если вы хотите получить деривацию.