||ExitCode -> IO a
Computation exitWith code terminates the program, returning code to the program's caller. Before the program terminates, any open or semi-closed
handles are first closed. The caller may interpret the return code as it wishes, but the program should return ExitSuccess
to mean normal completion, and ExitFailure n to mean that the program encountered a problem from which it could not recover.
exitWith bypasses the error handling in the I/O monad and cannot be intercepted by catch.
Input: exitWith ExitSuccess
Output: <<IO action>>
main = aaa 1
aaa 10 = exitWith ExitSuccess
aaa x = do putStr (show x)