sig
  type bit = Zero | One
  type 'a hufftree =
      Leaf of 'a
    | Node of 'Huffman.hufftree * 'Huffman.hufftree
  type 'a encoding = Empty | Tree of 'Huffman.hufftree
  val build_tree : 'a list -> 'Huffman.encoding
  val encode : 'Huffman.hufftree -> 'a list -> Huffman.bit list
  val decode : 'Huffman.hufftree -> Huffman.bit list -> 'a list
end