porte-0.0.4: Porte/Statistics.hs
module Porte.Statistics where
import qualified Data.ByteString.Lazy.Char8 as B
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 = foldr (\x -> M.insertWith' (+) x 1) M.empty
fieldsFrequency f = M.assocs . mapFrequency . concat . map f
fieldFrequency f = M.assocs . mapFrequency . map f
printFrequency :: FieldFrequency -> IO ()
printFrequency (a, b) = I.putStr (printf "%5d " b) >> B.putStrLn a