name:          binary-typed
version:       0.2.0.1
synopsis:      Type-safe binary serialization
Description:
      `Binary` serialization tagged with type information, allowing for
      typechecking and useful error messages at the receiving site.
      .
      This package serves the same purpose as tagged-binary, with a couple of
      key differences:
      .
      * Support of different kinds of serialized type annotations, each with
        specific strengths and weaknesses.
      .
      * Error messages can provide details on type errors at the cost of
        longer message lengths to include the necessary information.
      .
      * Serialization computationally almost as efficient as "Data.Binary" when
        precaching type representations; decoding however is slower.
        These values obviously depend a lot on the involved data and its type;
        an example benchmark is shown in the picture below.
      .
      * No depencency on @Internal@ modules of other libraries, and a very small
        dependency footprint in general.
      .
      For information about usage, see the "Data.Binary.Typed.Tutorial" module.
      .
      Performance-wise, here is a value @Right (Left \<100 chars lipsum\>)@ of
      type @Either (Char, Int) (Either String (Maybe Integer))@ benchmarked
      using the @Hashed64@ type representation:
      .
      <<http://i.imgur.com/JzhYqGZ.png>>
      .
      <doc/bench-overview.png (local copy)>
homepage:           https://github.com/quchen/binary-typed
bug-reports:        https://github.com/quchen/binary-typed/issues
license:            BSD2
license-file:       LICENSE
author:             David Luposchainsky
maintainer:         dluposchainsky on googles email service
copyright:          David Luposchainsky
category:           Data, Serialization
build-type:         Simple
cabal-version:      >= 1.10
tested-with:        GHC == 7.8.2
extra-source-files: doc/*.png

source-repository head
      type:     git
      location: https://github.com/quchen/binary-typed

library
      default-language:    Haskell2010
      exposed-modules:     Data.Binary.Typed
                           Data.Binary.Typed.Internal
                           Data.Binary.Typed.Tutorial
      ghc-options:         -Wall
      hs-source-dirs:      src
      other-extensions:    GADTs, DeriveGeneric
      build-depends:       base             >= 4.6 && < 5
                         , binary           >= 0.7
                         , bytestring       >= 0.9
                         , murmur-hash      >= 0.1


test-suite tasty
      default-language:    Haskell2010
      ghc-options:         -Wall -fno-warn-orphans
      hs-source-dirs:      tests
      main-is:             Tests.hs
      other-modules:       HUnit, QuickCheck
      other-extensions:    ScopedTypeVariables, NumDecimals
      type:                exitcode-stdio-1.0
      build-depends:       base
                         , binary           >= 0.7
                         , binary-typed
                         , bytestring
                         , tasty            >= 0.8
                         , tasty-hunit      >= 0.8
                         , tasty-quickcheck >= 0.8



test-suite message-length
      default-language:    Haskell2010
      ghc-options:         -Wall
      type:                exitcode-stdio-1.0
      hs-source-dirs:      benchmark
      main-is:             MessageLength.hs
      build-depends:       base
                         , binary
                         , binary-typed
                         , bytestring
      ghc-options:         -Wall



benchmark criterion
      default-language:    Haskell2010
      ghc-options:         -Wall
      type:                exitcode-stdio-1.0
      hs-source-dirs:      benchmark
      main-is:             Criterion.hs
      build-depends:       base
                         , binary
                         , binary-typed
                         , criterion
                         , deepseq
      ghc-options:         -Wall



benchmark criterion-overview
      default-language:    Haskell2010
      ghc-options:         -Wall
      type:                exitcode-stdio-1.0
      hs-source-dirs:      benchmark
      main-is:             CriterionOverview.hs
      build-depends:       base
                         , binary
                         , binary-typed
                         , criterion
                         , deepseq
                         , bytestring
      ghc-options:         -Wall