binary-tagged: Tagged binary serialisation.

[ bsd3, data, library ] [ Propose Tags ]

Check README on Github

[Skip to Readme]
Versions [RSS] [faq],,,,,,,, 0.1.5,,, 0.2, 0.3, 0.3.1
Change log
Dependencies aeson (>=0.8 && <0.11), array (==0.5.*), base (>=4.7 && <4.9), binary (==0.7.*), bytestring (==0.10.*), containers (==0.5.*), generics-sop (==0.1.*), hashable (==1.2.*), scientific (==0.3.*), SHA (==1.6.*), tagged (>=0.7 && <0.9), text (==1.2.*), time (>=1.4 && <1.6), unordered-containers (==0.2.*), vector (>=0.10 && <0.12) [details]
License BSD-3-Clause
Author Oleg Grenrus <>
Maintainer Oleg Grenrus <>
Category Web
Home page
Bug tracker
Source repo head: git clone
Uploaded by phadej at 2015-10-06T15:25:46Z
Distributions Arch:0.3.1, Debian:0.1.5, LTSHaskell:0.3.1, NixOS:0.3, Stackage:0.3.1
Downloads 13243 total (80 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs uploaded by user
Build status unknown [no reports yet]




Maintainer's Corner

For package maintainers and hackage trustees


Readme for binary-tagged-

[back to package description]


Build Status Hackage

Structurally tag binary serialisation stream.

Say you have:

data Record = Record
  { _recordFields :: HM.HashMap Text (Integer, ByteString)
  , _recordEnabled :: Bool
  deriving (Eq, Show, Generic)

instance Binary Record
instance HasStructuralInfo Record
instance HasSemanticVersion Record

then you can serialise and deserialise Record values with a structure tag by simply

encodeTaggedFile "cachefile" record
decodeTaggedFile "cachefile" :: IO Record

If structure of Record changes in between, deserialisation will fail early.

The overhead is next to non-observable, see a simple benchmark and the results.