The Haskell 98 Report
top | back | next | contents | function index
module System ( ExitCode(ExitSuccess,ExitFailure), getArgs, getProgName, getEnv, system, exitWith, exitFailure ) where data ExitCode = ExitSuccess | ExitFailure Int deriving (Eq, Ord, Read, Show) getArgs :: IO [String] getProgName :: IO String getEnv :: String -> IO String system :: String -> IO ExitCode exitWith :: ExitCode -> IO a exitFailure :: IO a |
このライブラリはプログラムとオペレーティングシステムのインタラクショ ンを記述するものである。
すべての System 操作は 21.1 節 で述べたように isIllegalOperationError を発生しうる。それ以 外のすべての許されるエラーは以下に記述する。実装が操作をサポートしな い場合には、isIllegalOperationError を発生させなければならな いことに特に注意すること。
ExitCode 型はプログラムが返すことのできる脱出コードを定義す る。ExitSuccess は成功裏に終了したことを示す。 ExitFailure code はプログラムが値 code ととも に失敗したことを示す。code の正確な解釈はオペレーティングシス テム依存である。特に code の値のいくつかは禁じられている。(た とえば、 0 は POSIX 準拠のシステムでは禁じられている。)
getArgs 計算はプログラムのコマンドライン引数のリスト(プログ ラム名は含まない)を返す。getProgName 計算は起動されたプログ ラムの名前を返す。getEnv var は環境変数 var の 値を返す。もし、変数 var が定義されていなければ、 isDoesNotExistError 例外を発生する。system cmd 計算はオペレーティングシステムのプロセスがcmd を実 行したときの終了コードを返す。
exitWith code はプログラムを終了してそのプログラムの 呼び出し元に code を返す。プログラムを終了する前に先ずオープン あるいはセミクローズ状態のハンドルをクローズする。呼び出し側は好きな ようにリターンコードを解釈することが可能であるが、プログラムは通常に 完了した場合にはExitSuccess を返さなくてはならない。また、 ExitFailure n はプログラムが修復不可能な問題に出 くわしたことを意味しなければならない。exitFailure の値は exitWith (ExitFailure exitfail) の 値に等しく、exitfail は実装依存である。exitWith は I/O モナド中のエラーハンドリングをバイパスし、catch による捕 捉は不可能である。
プログラムが error を呼んだ結果あるいは値が _|_ になっ
てプログラムが終了した場合には exitFailure 計算と同等の扱い
となる。そうではない場合、プログラム p が明示的に
exitWith を呼ぶことなく終了した場合、その扱いは以下の計算と
同じである。
(p >> exitWith ExitSuccess) `catch` \ _ -> exitFailure
The Haskell 98 Report
top | back | next | contents | function index
December 2002