Возможно, вы захотите взглянуть на монаду Put
в Data.Binary.Put
.Вы не предоставили ни одного примера кода, но кое-что для начала:
-- just an example with some made up encoding
huffmanEncode :: HTree -> Put
huffmanEncode (Leaf c val) = do
putWord16be 0xf00
putCharUtf8 c
putWord32be $ fromIntegral val
huffmanEncode (Branch l r x) = do
putWord16be 0xbaf
putWord32be $ fromIntegral x
huffmanEncode l
huffmanEncode r
Затем вы бы "запустили" свой кодировщик таким образом: runPut $ huffmanEncode myTree