Readme for binary-0.6.1.0

binary: efficient, pure binary serialisation using lazy ByteStrings ------------------------------------------------------------------------ The 'binary' package provides Data.Binary, containing the Binary class, and associated methods, for serialising values to and from lazy ByteStrings. A key feature of 'binary' is that the interface is both pure, and efficient. The 'binary' package is portable to GHC and Hugs. Building: runhaskell Setup.lhs configure runhaskell Setup.lhs build runhaskell Setup.lhs install First: import Data.Binary and then write an instance of Binary for the type you wish to serialise. More information in the haddock documentation. Deriving: It is possible to mechanically derive new instances of Binary for your types, if they support the Data and Typeable classes. A script is provided in tools/derive. Here's an example of its use. $ cd binary $ cd tools/derive $ ghci -fglasgow-exts BinaryDerive.hs *BinaryDerive> :l Example.hs *Main> deriveM (undefined :: Exp) instance Binary Main.Exp where put (ExpOr a b) = putWord8 0 >> put a >> put b put (ExpAnd a b) = putWord8 1 >> put a >> put b put (ExpEq a b) = putWord8 2 >> put a >> put b put (ExpNEq a b) = putWord8 3 >> put a >> put b put (ExpAdd a b) = putWord8 4 >> put a >> put b put (ExpSub a b) = putWord8 5 >> put a >> put b put (ExpVar a) = putWord8 6 >> put a put (ExpInt a) = putWord8 7 >> put a get = do tag_ <- getWord8 case tag_ of 0 -> get >>= \a -> get >>= \b -> return (ExpOr a b) 1 -> get >>= \a -> get >>= \b -> return (ExpAnd a b) 2 -> get >>= \a -> get >>= \b -> return (ExpEq a b) 3 -> get >>= \a -> get >>= \b -> return (ExpNEq a b) 4 -> get >>= \a -> get >>= \b -> return (ExpAdd a b) 5 -> get >>= \a -> get >>= \b -> return (ExpSub a b) 6 -> get >>= \a -> return (ExpVar a) 7 -> get >>= \a -> return (ExpInt a) _ -> fail "no decoding" Contributors: Lennart Kolmodin Duncan Coutts Don Stewart Spencer Janssen David Himmelstrup Björn Bringert Ross Paterson Einar Karttunen John Meacham Ulf Norell Tomasz Zielonka Stefan Karrmann Bryan O'Sullivan Florian Weimer