
On Wed, Jan 28, 2009 at 5:18 PM, Erik de Castro Lopo
Alexander Dunlap wrote:
You can do (something like; this is untested)
splitDirFile :: [FilePath] -> IO ([FilePath],[FilePath]) splitDirFile [] = return ([],[]) splitDirFile (f:fs) = do (yess,nos) <- splitDirFile fs exists <- doesDirectoryExist f return $ if exists then (f:yess,nos) else (yess,f:nos)
Untested, but seems to work perfectly :-). Thanks.
However, that brings me to the next stage where again I'm trapped. I would like to do a foldl' on a function that returns IO [FilePath].
I tried using Control.Monad.foldM, but then I end up with a function taht return :
IO (IO ([FilePath]))
which doesn't work :-).
It seems pretty obvious that I could implement a recursion like Alexander did above for splitDirFile but I was wondering if there was a more general solution.
Cheers, Erik
It seems like foldM ought to do what you want. Could you post some more details please? Alex