Thanks Ivan,

>
> * Keep using old-style exceptions.  With GHC 6.10 and 6.12, import
> Control.OldException instead of Control.Exception
> * Manually migrate the RWH code to new-style exceptions; there are two
> ways of doing this:
>  - For production code, you should add explicit type signatures, etc.
> for your exception-handling functions passed to handle, etc.
>  - For just playing around, use SomeException: e.g.: handle (\
> SomeException{} -> putStrLn "Text") (print x)
>

Could you please review the change I've done to Don Stewart's
scripting example -

run s = handle (fail . show) $ do
    (ih,oh,eh,pid) <- runInteractiveCommand s
    so <- hGetContents oh
    se <- hGetContents eh
    hClose ih
    ex <- waitForProcess pid
    case ex of
        ExitFailure e      -> fail $ "Failed with status: " ++ show e
        _  | not (null se) -> fail se
           | otherwise     -> return so


My change -

run s = handle (\e@(SomeException{}) -> return (show e)) $ do
    (ih,oh,eh,pid) <- runInteractiveCommand s
    so <- hGetContents oh
    se <- hGetContents eh
    hClose ih
    ex <- waitForProcess pid
    case ex of
        ExitFailure e      -> fail $ "Failed with status: " ++ show e
        _  | not (null se) -> fail se
           | otherwise     -> return so


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

Reply via email to