Binary IO
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Data.Binary
There are a number of binary I/O libraries available for Haskell. The best to use is the new, semi-standard Data.Binary library:
* Data.Binary
It's very simple to use, and provides a highly efficient, pure interface to binary serialisation.
A tutorial:
* Serialisation_and_compression_with_Data_Binary
Other libraries
- JeremyShaw's update of HalDaume's NewBinary package (Cabalized): http://www.n-heptane.com/nhlab/repos/NewBinary
- Data.ByteString (Cabalised) also provides byte level operations, and is used in some applications for binary IO
- SerTH, the TH version (sort of) of NewBinary.
- PeterSimons's BlockIO package (Cabalized): http://cryp.to/blockio/
- JohnGoerzen's MissingH package (Cabalized): http://quux.org/devel/missingh
- SimonMarlow's experimental NewIO package: http://www.haskell.org/~simonmar/new-io.tar.gz (documentation at http://www.haskell.org/~simonmar/io/)
For very simple serialisation, use read
and show
.
If you have simple binary IO requirements, then Data.ByteString might be easiest -- you get a List-like interface to packed byte arrays (interface documented here). For more complex serialisation, Data.Binary would be preferred.