[Haskell-cafe] Re: Abstraction leak
apfelmus at quantentunnel.de
Sat Jun 30 04:42:42 EDT 2007
David Roundy wrote:
> On Fri, Jun 29, 2007 at 07:39:28PM +0100, Andrew Coppin wrote:
>> Now I have a problem. It's easy enough to pass the entire data stream
>> through an RLE decoder and feed that to the Huffman table deserialize
>> function, and it will give be back the table. But I now have *no clue*
>> where the table ends in the original stream!
> Sounds to me like you want a parsing monad. Generally, when you want
> state, you want a monad, and the field of parsing monads is pretty mature.
> You can either write up a monad of your own, or use one of the existing
> ones (parsec, frisby, read).
Am I missing something or why wouldn't
encode, decode :: String -> String
encode = encodeRLE . encodeHuffman
decode = decodeHuffman . decodeRLE
do the job? This is probably what Andrew intends to do in his Java
version. Note that this not only RLE-encodes the Huffman table but also
(needlessly) the data stream. In case you only want to RLE the table, a
simple Word32 field tracking the size of the Huffman table should be enough.
More information about the Haskell-Cafe