# Persistant (as in on disk) data

**Malcolm Wallace
**
Malcolm.Wallace@cs.york.ac.uk

*Fri, 7 Mar 2003 09:40:46 +0000*

"mike V" <mivori@hotmail.com> writes:
>* >The nhc98 compiler already accepts a `deriving Binary' clause.
*>* >DrIFT likewise already supports {-! derives : Binary !-}.
*>*
*>* What was the strategy employed to derive instances of sum types, i.e. the
*>* binary representation?
*
For a sum-of-products type with n constructors, represent the
constructor as a bit sequence of length ceiling(log n), and then
simply append the binary representation of each product component.
This gives a nice generic scheme, although of course it is possible to
write instances manually that yield a higher compression. For instance
in some applications we used Huffman encoding based on the frequency
of occurrence of each constructor.
Regards,
Malcolm