My solution to the quiz can be found here:

    http://pastie.caboo.se/61613

This solution has a number of features which might make it different
to other solutions submitted.  It encodes to and decodes from actual
binary data, not strings of "0" and "1" characters.  It is able to
serialize and deserialize the Huffman encoder (which is a hash
table, not a tree).  It uses a linear algorithm to create the
Huffman code from the character frequency data.  And beyond that, it
was written with an attempt to be efficient time-wise and
memory-wise.  It uses an end-of-message token (:eom) to mark the end
of the encoded message.  It therefore is able to handle messages
that use 256 characters plus the 1 token.  It recognizes that with
large messages some characters could be encoded with more than 8
bits, and it handles those situations.  And finally it makes an
attempt to recognize corrupt data, both in terms of the Huffman
encoded message and the serialized encoder.

Eric