RefSerialize: Write to and read from Strings maintaining internal memory references
Read, Show and Data.Binary do not check for repeated references to the same address. As a result, the data is duplicated when serialized. This is a waste of space in the filesystem and also a waste of serialization time. but the worst consequence is that, when the serialized data is read, it allocates multiple copies for the same object when referenced multiple times. Because multiple referenced data is very typical in a pure language such is Haskell, this means that the resulting data loose the beatiful economy of space and processing time that referential transparency permits.
Every instance of Show/Read is also a instance of Data.RefSerialize.
This package allows the serialization and deserialization of large data structures without duplication of data, with the result of optimized performance and memory usage. It is also useful for debugging purposes.
There are automatic derived instances for instances of Read/Show. Lists of non-chars have its own instance. The deserializer contains a subset of Parsec.Token for defining deserializing parsers.
the serialized string has the form:
expr( var1, ...varn) where var1=value1,..valn=valueN
so that the string can be EVALuated.
See demo.hs and tutorial.
in this release:
Proper trailing withespace handlling for instances of Read
Error handllig for instances of Read.
derived instances for Data.Binary
serialization to/from ByteStings
|Versions [faq]||0.2, 0.2.1, 0.2.2, 0.2.3, 0.2.4, 0.2.5, 0.2.6, 0.2.7, 0.2.8, 0.2.8.1, 0.3.0.0, 0.3.0.1, 0.3.1.0, 0.3.1.1, 0.3.1.2, 0.3.1.3, 0.3.1.4, 0.4.0|
|Dependencies||base (==3.*), containers [details]|
|Author||Alberto Gómez Corona|
|Category||Parsing, Data, Database|
|Uploaded||by AlbertoCorona at Thu Sep 24 11:34:36 UTC 2009|
|Distributions||LTSHaskell:0.4.0, NixOS:0.4.0, Stackage:0.4.0|
|Downloads||10566 total (166 in the last 30 days)|
|Rating||(no votes yet) [estimated by rule of succession]|
Docs uploaded by user
Build status unknown [no reports yet]
For package maintainers and hackage trustees