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.
Very small performance overhead compared to using standard Binary
due
to caching when using hashed type information. Since shown and full
types are not cached, decoding them has a significant performance hit
(ballpark: factor of two).
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:
(local copy)