shithub: MicroHs

Download patch

ref: b1d42d485b84eda36fee77fb403bf7c8faee1d2d
parent: 0a75bcd517c4550cee58a41ef2bb773eb6d4f95a
author: Lennart Augustsson <lennart.augustsson@epicgames.com>
date: Thu Sep 21 15:02:05 EDT 2023

Some statistics helpers

--- /dev/null
+++ b/Tools/Count.hs
@@ -1,0 +1,9 @@
+import System.Environment
+import Data.List
+
+main = do
+  [pat, fn] <- getArgs
+  file <- readFile fn
+  let n = length $ filter (isPrefixOf pat) (tails file)
+  print n
+  
--- /dev/null
+++ b/Tools/Stats.hs
@@ -1,0 +1,17 @@
+import System.Environment
+import qualified Data.Map as M
+import Data.Function
+import Data.List
+
+main = do
+  [fn] <- getArgs
+  file <- readFile fn
+  let res = loop M.empty file
+      loop m "" = m
+      loop m cs@(_:ds) | Just (x,y) <- getComb cs = loop (M.insertWith (+) x 1 m) y
+                       | otherwise = loop m ds
+      getComb ('(':'$':cs) = Just ('$':xs, tail ys) where (xs, ys) = span (/= ')') cs
+      getComb _ = Nothing
+      srt = sortBy (compare `on` snd) $ M.toList res
+  mapM print srt
+  
--