module Huffman where import Data.Map.Strict (Map, (!)) import qualified Data.Map.Strict as Map import LeftistHeap (PQueue) import qualified LeftistHeap as PQueue import HuffmanDef decode :: HuffmanTree -> [Bool] -> [Char] decode = error "TODO" huffmanTree :: [(Char, Int)] -> HuffmanTree huffmanTree = error "TODO" buildDict :: HuffmanTree -> Map Char [Bool] buildDict = error "TODO" encode :: HuffmanTree -> [Char] -> [Bool] encode tree cs = concatMap (\c -> dict ! c) cs where dict = buildDict tree