module Porte.Statistics where import qualified Data.ByteString.Lazy.Char8 as B import qualified Porte.Ports as P import qualified Data.Map as M import qualified System.IO as I import Text.Printf(printf) type FrequencyMap = M.Map B.ByteString Int type FieldFrequency = (B.ByteString, Int) mapFrequency :: [B.ByteString] -> FrequencyMap mapFrequency (x:xs) = M.insertWith' (+) x 1 $ mapFrequency xs mapFrequency _ = M.empty fieldsFrequency f r = M.assocs $ mapFrequency (concat $ map f r) fieldFrequency f r = M.assocs $ mapFrequency (map f r) printFrequency :: FieldFrequency -> IO () printFrequency (a, b) = I.putStr (printf "%5d " b) >> B.putStrLn a