
Hello Andrew, Sunday, June 21, 2009, 1:52:22 PM, you wrote:
d1x <- doesDirectoryExist d1 if d1x then do f1x <- doesFileExist (d1 > f1) if f1x then do d2x <- doesDirectoryExist d2 if d2x then do f2x <- doesFileExist (d2 > f2) if f2x then do_stuff d1 d2 f1 f2 else hPutStrLn stderr $ "File " ++ f2 ++ " not found." else hPutStrLn stderr $ "Directory " ++ d2 ++ " not found." else hPutStrLn stderr $ "File " ++ f1 ++ " not found." else hPutStrLn stderr $ "Directory " ++ d1 ++ " not found."
d1x <- doesDirectoryExist d1 if not d1x then hPutStrLn stderr $ "Directory " ++ d1 ++ " not found." else do f1x <- doesFileExist (d1 > f1) if not f1x then hPutStrLn stderr $ "File " ++ f1 ++ " not found." else do d2x <- doesDirectoryExist d2 if not d2x then hPutStrLn stderr $ "Directory " ++ d2 ++ " not found." else do f2x <- doesFileExist (d2 > f2) if not f2x then hPutStrLn stderr $ "File " ++ f2 ++ " not found." else do do_stuff d1 d2 f1 f2 or, with a little additional combinators: ifM (not ==<< doesDirectoryExist d1) (hPutStrLn stderr $ "Directory " ++ d1 ++ " not found.") $ do ifM (not ==<< doesFileExist (d1 > f1)) (hPutStrLn stderr $ "File " ++ f1 ++ " not found.") $ do ifM (not ==<< doesDirectoryExist d2) (hPutStrLn stderr $ "Directory " ++ d2 ++ " not found.") $ do ifM (not ==<< doesFileExist (d2 > f2)) (hPutStrLn stderr $ "File " ++ f2 ++ " not found.") $ do do_stuff d1 d2 f1 f2 -- Best regards, Bulat mailto:Bulat.Ziganshin@gmail.com