Существует ли шаблон Haskell / механизм получения для Data.Binary (или друзей?) - PullRequest
7 голосов
/ 03 января 2012

Документация Data.Binary показывает написание экземпляра вручную.Это можно обойти?Я видел здесь есть еще одна библиотека, SerTH, которая имеет механизм извлечения (на основе Template Haskell), но ссылка на него кажется неработающей.Также, если вы знаете другие библиотеки, для нас очень важна хорошая производительность.

Заранее спасибо!

Ответы [ 3 ]

6 голосов
/ 02 мая 2013

См. 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
5 голосов
/ 03 января 2012

Поскольку вы спрашивали о других библиотеках:

Библиотека сериализации данных cereal имеет cereal-производный , который работает с новой поддержкой Generics в GHC 7.2.Это имеет преимущество в скорости компиляции по сравнению с Template Haskell (в наши дни я стараюсь избегать TH только потому, что это делает компиляцию еще медленнее) и преимущество в скорости выполнения по сравнению с универсальными методами типа данных, такими как SYB и Uniplate.

cereal очень похож на двоичный, но использует строгие строки ByteStrings;Двоичный файл не обновлялся с 2009 года, и в зерновых есть такие тонкости, как Поддержка формата с плавающей запятой IEEE-754 , поэтому я не вижу причин, чтобы не использовать его над двоичным, если вы хотите получить.

5 голосов
/ 03 января 2012

Neil Mitchells Производный пакет содержит шаблон макроса haskell для получения двоичных экземпляров.

...