-- TODO: Should probably use ByteString instead? module Data.Binary.Defer.Vector( Vector, toList, fromList ) where import Control.Monad import Data.Binary.Defer newtype Vector a = Vector [a] instance BinaryDefer a => BinaryDefer (Vector a) where put (Vector xs) = putDefer $ do putInt (length xs) mapM_ put xs get = getDefer $ do i <- getInt liftM Vector $ replicateM i get toList :: Vector a -> [a] toList (Vector xs) = xs fromList :: [a] -> Vector a fromList = Vector