Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
20
Task/Function-frequency/Haskell/function-frequency.hs
Normal file
20
Task/Function-frequency/Haskell/function-frequency.hs
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
import Language.Haskell.Parser (parseModule)
|
||||
import Data.List.Split (splitOn)
|
||||
import Data.List (nub, sortOn, elemIndices)
|
||||
|
||||
findApps src = freq $ concat [apps, comps]
|
||||
where
|
||||
ast = show $ parseModule src
|
||||
apps = extract <$> splitApp ast
|
||||
comps = extract <$> concat (splitComp <$> splitInfix ast)
|
||||
splitApp = tail . splitOn "(HsApp (HsVar (UnQual (HsIdent \""
|
||||
splitInfix = tail . splitOn "(HsInfixApp (HsVar (UnQual (HsIdent \""
|
||||
splitComp = take 1 . splitOn "(HsQVarOp (UnQual (HsSymbol \""
|
||||
extract = takeWhile (/= '\"')
|
||||
freq lst = [ (count x lst, x) | x <- nub lst ]
|
||||
count x = length . elemIndices x
|
||||
|
||||
main = do
|
||||
src <- readFile "CountFunctions.hs"
|
||||
let res = sortOn (negate . fst) $ findApps src
|
||||
mapM_ (\(n, f) -> putStrLn $ show n ++ "\t" ++ f) res
|
||||
Loading…
Add table
Add a link
Reference in a new issue