| Stability | experimental |
|---|---|
| Maintainer | Lars Petersen <info@lars-petersen.net> |
| Safe Haskell | Safe-Infered |
Data.Binary.Generic.Extensions
Description
You can build your own type-specific stacks. For example the default stack looks like this, whereas the ordering determines, which function matches first for a specific type. This especially allows you to override the default choices:
getExtDefault :: Typeable a => Get a -> Get a
getExtDefault = getExtInteger
. getExtChar
. getExtWord
. getExtInt
. getExtFloat
. getExtText
. getExtByteString
putExtDefault :: Typeable a => (a -> Put) -> a -> Put
putExtDefault = putExtInteger
. putExtChar
. putExtWord
. putExtInt
. putExtFloat
. putExtText
. putExtByteString
Notice that these stacks have to be grounded, ideally with something
that handles algebraic types.
Have a look at Data.Binary.Generic how this is done for the default
stack.
IMPORTANT: You cannot simply apply an extension to getGeneric or
putGeneric, since these do a recursive call at the bottom level
which points to the top of the stack.
Documentation
getExtDefault :: Typeable a => Get a -> Get aSource
putExtDefault :: Typeable a => (a -> Put) -> a -> PutSource
getExtInteger :: Typeable a => Get a -> Get aSource
putExtInteger :: Typeable a => (a -> Put) -> a -> PutSource
getExtChar :: Typeable a => Get a -> Get aSource
putExtChar :: Typeable a => (a -> Put) -> a -> PutSource
getExtWord :: Typeable a => Get a -> Get aSource
putExtWord :: Typeable a => (a -> Put) -> a -> PutSource
getExtFloat :: Typeable a => Get a -> Get aSource
putExtFloat :: Typeable a => (a -> Put) -> a -> PutSource
getExtText :: Typeable a => Get a -> Get aSource
putExtText :: Typeable a => (a -> Put) -> a -> PutSource
getExtByteString :: Typeable a => Get a -> Get aSource
putExtByteString :: Typeable a => (a -> Put) -> a -> PutSource