计算haskell中文件的特定字符的出现次数

时间:2015-12-16 21:05:07

标签: haskell

我是haskell的初学者,我想知道如何计算haskell文件中的字符。从this book我写了任何字符串中任何字符的计数,但我想知道我是否可以使用文件执行相同的功能。代码类似于以下内容;

count :: Char -> String -> Int 
count x xs = length [x'|x'<-xs, x==x']

任何帮助都会非常棒。谢谢!

编辑:我对haskell很新,所以这可能是一个非常愚蠢的问题:)

1 个答案:

答案 0 :(得分:1)

重复使用count功能。您可以将其映射到readFile,并将文件的内容作为字符串返回:

count :: Eq a => a -> [a] -> Int
count x xs = length [x' | x' <- xs, x==x']

cntFile :: Char -> FilePath -> IO Int
cntFile c f = count c <$> readFile f

main :: IO ()
main = do
    cnt <- cntFile 'c' "test.hs"
    print cnt

运算符<$>只是fmap的中缀表示法,对IO以及Functor map列出的任何其他cntFile' :: Char -> FilePath -> IO Int cntFile' c f = do content <- readFile f let cnt = count c content return cnt 表示。

初学者的替代选择可能是:

{{1}}