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.zigans...@gmail.com

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to