总结目录中的文件大小
问题描述:
我在绕包装如何完成此操作时遇到问题。我在与monads/IO合作方面相对较新,所以如果我错过了某些明显的东西,请原谅。我在谷歌搜索了一段时间,并没有提出任何建议,也没有读到我正在弄清楚如何做到这一点。总结目录中的文件大小
这是我现在有:
import System.Path.Glob (glob)
import System.Posix.Files (fileSize, getFileStatus)
dir = "/usr/bin/"
lof = do files <- (glob (dir++"*"))
(mapM_ fileS files)
fileS file = do fs <- getFileStatus file
print (fileSize fs)
正如你所看到的,这得到了尺寸并打印出来,但我卡在如何真正总结他们。
答
你快到了。你可以有fileS
返回文件的大小,而不是打印出来:
return (fileSize fs)
然后,而不是mapM_
ING(其扔掉的结果),做一个mapM
(返回结果的列表):
sizes <- mapM fileS files
现在sizes
是对应于尺寸的数字列表。 sum
他们应该很容易:-)
为了加深你对这个例子的理解(并且练习良好的习惯),试着为你的函数编写类型签名。请与:t
联系ghci寻求帮助。
谢谢,我现在想通了。像魅力一样工作:) – Wes
+1帮助学习的答案。 –