Haskell-コマンドライン引数
Haskellにおけるコマンドライン引数の取得方法
getArgsの利用
Haskellにおけるコマンドラインの引数は「getArgs」を使って取得します。
getArgsを使うにはSystem(getArgs)をimportする必要があります。
$ cat args.hs
#!/usr/bin/env runghc
import System(getArgs)
main = getArgs
実行すると、コマンドライン引数はリスト形式で格納されます。
$ ./args.hs haskell cmd args
["haskell","cmd","args"]
コマンドオプションの取得方法
引数が設定されていない場合にはusageを表示します。
$ cat args.hs
#!/usr/bin/env runghc
import System(getArgs)
usage = putStrLn("Usage: cmd filename")
main = do
args <- getArgs
if length args /= 1
then usage
else do
let filename = head args
print (filename)
$ ./args.hs /usr/bin/ghc
"/usr/bin/ghc"
複数ファイル指定可能なcatコマンドの作成
引数に複数のファイル名を指定すると、対象ファイルを読み込んで標準出力します。
引数が指定されていない場合には、interact関数を用いて標準入力から入力を受け付けます。
$ ./cat cat.hs
#!/usr/bin/env runghc
import System.Environment (getArgs)
main = do
args <- getArgs
if null args
then
interact id
else
mapM_ (\x -> readFile x >>= putStr) args