[Haskell-cafe] Toy compression algorithms [was: A very edgy language]

Andrew Coppin andrewcoppin at btinternet.com
Mon Jul 9 16:42:16 EDT 2007


Stefan O'Rear wrote:
> On Mon, Jul 09, 2007 at 09:15:07PM +0100, Andrew Coppin wrote:
>   
>> Oh, sure, the *idea* is simple enough. Trying to actually *implement* it 
>> correctly is something else... ;-)
>>     
>
> Took me about an hour and 50 lines of code (about a year ago - this was
> one of my first Haskell programs) to implement a PPM (de)compressor that
> didn't crash, always generated the same output as input, and achieved
> 50% ratios on its own source code (not quite as good as gzip, but what
> do you expect from a completely untuned compressor?).
>   

...aren't you one of those insanely intelligent people working on GHC? :-P

Actually, I wrote a working compressor in JavaScript. (You know, as an 
interactive web page. No, I don't still have it...) At least, I presume 
it works... I never had occasion to try to decompress the output! (I 
remember it had no underflow handling though...)

Now, writing one that works in binary rather than decimal, and isn't 
absurdly inefficient? (I.e., it *doesn't* work by converting every thing 
to decimal strings, jiggling the characters around, and then parsing 
back to machine integers.) That is something I haven't managed yet...

> Peak throughput: 2 bits / sec. :)
>   

How fast can you click buttons? That was mine's peak output. ;-)

>>> the jhc is very different story
>>>       
>> Yes - last I heard, it's an experimental research project rather than a 
>> production-ready compiler...
>>     
>
> Correct.  It requires 5 minutes and 600MB of RAM to compile Hello,
> World, and fails with internal pattern match errors on anything
> significantly larger.
>   

Ouch. That's pretty advanced... :-D



More information about the Haskell-Cafe mailing list