[Haskell-beginners] Folders and sub-folders

Imants Cekusins imantc at gmail.com
Thu Feb 25 19:07:37 UTC 2016


Hello Mike,

below code find all files recursively from a starting point. It works.

You'd need to tweak it to find folders instead.


import System.Directory
import Data.List


findAllFiles::FilePath -> IO [FilePath]
findAllFiles base0 = gd1 base0
        >>= \list1 -> concatMap' recurse3 list1
     where gd1 d1 = filter f2 <$> (getDirectoryContents d1)
           f2 "." = False
           f2 ".." = False
           f2 _ = True
           recurse3 md3 = doesDirectoryExist md3full
                      >>= \isDir3 ->
                        if isDir3 then findAllFiles md3full
                        else pure [md3full]
                    where md3full = base0 ++ "/" ++ md3



concatMap':: (a -> IO [b]) -> [a] -> IO [b]
concatMap' m0 list0 = sequence (m0 <$> list0)
        >>= \list2 -> pure $ concat list2


More information about the Beginners mailing list