ajhc-0.8.0.1: src/Support/MapBinaryInstance.hs
module Support.MapBinaryInstance where
import Control.Monad
import Data.Binary
import Data.Map as Map
import Data.Set as Set
putMap :: (Binary k,Ord k,Binary v) => Map.Map k v -> Put
putMap x = do
put (fromIntegral $ Map.size x :: Word32)
mapM_ put (Map.toList x)
getMap :: (Binary k,Ord k,Binary v) => Get (Map.Map k v)
getMap = do
sz <- get :: Get Word32
ls <- replicateM (fromIntegral sz) get
return (Map.fromList ls)
putSet :: (Binary a,Ord a) => Set.Set a -> Put
putSet x = do
put (fromIntegral $ Set.size x :: Word32)
mapM_ put (Set.toList x)
getSet :: (Binary a,Ord a) => Get (Set.Set a)
getSet = do
sz <- get :: Get Word32
ls <- replicateM (fromIntegral sz) get
return (Set.fromList ls)