我是haskell的初学者,我想知道如何计算haskell文件中的字符。从this book我写了任何字符串中任何字符的计数,但我想知道我是否可以使用文件执行相同的功能。代码类似于以下内容;
count :: Char -> String -> Int
count x xs = length [x'|x'<-xs, x==x']
任何帮助都会非常棒。谢谢!
编辑:我对haskell很新,所以这可能是一个非常愚蠢的问题:)
答案 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}}