我想枚举 Haskell 中一个文件夹的所有子文件夹。获取所有文件夹内容很容易,有一个 getDirectoryContents
功能。但是我该如何过滤它们呢?由于getDirectoryContents
返回 aIO [FilePath]
和filter
期望[a]
,我不能将这两者直接放在一起。(显然,我是一条有 monads 和 do-notation 的新鲜鱼。)
getAllFolders :: FilePath -> IO [FilePath]
getAllFolder path = do
allItems <- getDirectoryContents path
-- now what? the predicate is doesDirectoryExist