| Stability | experimental |
|---|---|
| Maintainer | Lars Petersen <info@lars-petersen.net> |
| Safe Haskell | Safe-Infered |
Data.Binary.Generic
Description
For any algebraic datatype just make it an instance of class Data.Data.Data
by simply deriving Data on definition or try stand-alone-deriving. This
allows the library to enumerate the value constructors and thereby
encoding their index. Notice that serialisation depends on a type's
structure. Serialisations might get unreadable if the type is altered.
getGeneric and putGeneric implement a selection of type-specific
defaults and are grounded by a canonical serialisation for all algebraic
types that instantiate Data.
Have a look at Data.Binary.Generic.Extensions for details.
If you want to ground your own type-specific stack myStack of extensions
write the following for the Get-part (the Put-part follows
analogously):
getMyStack :: Data a => Get a getMyStack = myStack (getGenericByCallback getMyStack)
Documentation
getAlgebraic :: Data a => Get aSource
putAlgebraic :: Data a => a -> PutSource
getGeneric :: Data a => Get aSource
putGeneric :: Data a => a -> PutSource