最近では、何かプログラムを書くときは、Haskell を使うようにしています。Haskell でスクリプトを書くと困ることの一つに、コマンドライン・オプションの処理があります。 IOモナド地獄 System モジュールで定義されている getArgs は IO [String] を返します。そこで、型が IO () である main などから以下のように使うことになります。 -- "-c" オプションを調べる import System main = do argv <- getArgs let cflag = "-c" `elem` argv -- ここに何か書く この方法には2つ問題があります。 main で getArgs を使うと、コマンドライン・オプションの処理結果(cflag など)を下位の関数にずっと渡していかないといけない コマンドライン・オプションの処理結果が必要な関数で