0 | module Data.Compress.Interface
3 | interface Decompressor a where
5 | feed : a -> List Bits8 -> Either String (List Bits8, a)
8 | done : a -> Either String (List Bits8)
13 | data IdentityState = Id
16 | Decompressor IdentityState where
17 | feed Id content = Right (content, Id)
22 | decompress : a -> Decompressor a => List Bits8 -> Either String (List Bits8)
23 | decompress _ compressed = do
24 | (uncompressed, state) <- feed {a} init compressed
26 | | x => Left "{\show (length x)} leftover bytes"