--
-- Types.hs
--
--------------------------------------------------------------------------------

module Types ( HTree(HLeaf, HNode), Bit(L,R), HCode, Table, htext ) where


-- Huffman-Baum ----------------------------------------------------------------

data HTree = HLeaf Char Int         -- repraesentierter Buchstabe, Haeufigkeit
           | HNode Int HTree HTree  -- akkumulierte Haeufigkeit, li./re. Teilbaum
           deriving Show

data Bit = L                      -- Links
         | R                      -- Rechts
         deriving Show

type HCode = [Bit]                -- Code-Sequenz


-- Huffman-Tabelle -------------------------------------------------------------

type Table = [ (Char, HCode) ]    -- ordnet jedem Buchstaben einen
                                  -- Huffman-Code zu
                                  -- (wird aus Huffman-Baum erzeugt)


-- Referenztext ----------------------------------------------------------------

htext :: String
htext = "Dieser Text dient der Ermittlung der typischen " ++
        "Buchstabenhaeufigkeiten in einem Text. Ein " ++
        "moeglichst langer Text ist daher von Vorteil. " ++
        "Die Huffman-Kodierung ist eine verlustlose Kompressionsmethode, " ++
	"bei der haeufig vorkommende Buchstaben durch kuerzere Bitfolgen " ++
	"dargestellt werden als seltene. Anhand eines Referenztextes werden "++
	"die Haeufigkeiten der darin vorkommenden Zeichen bestimmt."
	

	