porte-0.0.2: Porte/Statistics.hs
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