Unexpected results from ExitCode

I have a program (test.hs):
module Main (main) where import System.Exit main :: IO ExitCode main = do return (ExitFailure 1)
In another program, I invoke it via 'system':
exitCode <- system ".\\test.exe" case (exitCode) of ExitFailure failCnt -> do putStrLn $ "-- Fail count is: " ++ show failCnt exitFailure ExitSuccess -> do putStrLn $ "-- OK." exitSuccess
but it always gets ExitSuccess (not ExitFailure failCnt as I expected). (I am running under Windows.) My other use of system (such as with ghc commands) works okay, sometimes getting success, sometimes failure, as expected. Any suggestions much appreciated. Thanks, -- Peter

At 8:45 PM -0700 11/3/10, Peter Schmitz wrote:
I have a program (test.hs):
module Main (main) where import System.Exit main :: IO ExitCode main = do return (ExitFailure 1)
In another program, I invoke it via 'system':
exitCode <- system ".\\test.exe" case (exitCode) of ExitFailure failCnt -> do putStrLn $ "-- Fail count is: " ++ show failCnt exitFailure ExitSuccess -> do putStrLn $ "-- OK." exitSuccess
but it always gets ExitSuccess (not ExitFailure failCnt as I expected). (I am running under Windows.)
My other use of system (such as with ghc commands) works okay, sometimes getting success, sometimes failure, as expected.
Any suggestions much appreciated. Thanks, -- Peter
The value returned by `main` is always discarded. You need to use `exitWith`: main = exitWith (ExitFailure 1)
participants (2)
-
Dean Herington
-
Peter Schmitz