[Haskell-beginners] Folders and sub-folders
Sylvain Henry
hsyl20 at gmail.com
Fri Feb 26 13:01:43 UTC 2016
Your "isOk" function will filter out hidden directories on Unix (which may
be what you want?).
Otherwise: isOk = (`notElem` [".",".."])
Also "\x -> folders x" = "folders"
2016-02-26 11:42 GMT+01:00 Mike Houghton <mike_k_houghton at yahoo.co.uk>:
> Thanks.
>
>
> I sweated it bit more and got
>
>
>
> isOk FilePath -> Bool
> isOk = not . isPrefixOf "."
>
> folders :: FilePath -> IO [FilePath]
> folders fp = do
> all <- getDirectoryContents fp
> z' <- filterM doesDirectoryExist $ map (fp </>) (filter isOk all)
> x' <- mapM (\x -> folders x) z'
> return $ z' ++ (concat x') ::
>
> which seems to work.
>
>
> > On 25 Feb 2016, at 19:07, Imants Cekusins <imantc at gmail.com> wrote:
> >
> > 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
> > _______________________________________________
> > Beginners mailing list
> > Beginners at haskell.org
> > http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/beginners/attachments/20160226/6ace6a92/attachment.html>
More information about the Beginners
mailing list