
Hi, I’m trying to build up a list of all folders (including subfolders) from a given root folder. So I have folders :: FilePath -> IO [FilePath] folders fp = do all <- getDirectoryContents fp filterM doesDirectoryExist $ map (fp >) all and this just gets the immediate folders within the given folder. I’m stuck on how to recursively call folders and build up the IO [FilePath] folders :: FilePath -> IO [FilePath] folders fp = do all <- getDirectoryContents fp -- z :: IO [FilePath] let z = filterM doesDirectoryExist $ map (fp >) all — z’ :: [FilePath] z' <- z — ?? what should happen here? z : (map folders z’) Couldn't match expected type ‘[FilePath]’ with actual type ‘IO [FilePath]’ In the first argument of ‘(:)’, namely ‘z’ In a stmt of a 'do' block: z : (map folders z') etc... Thanks Mike