ファイル入力か標準入力

引数が与えられたらそれをファイル名と見なしてファイルを読み込み,与えられなければ標準入力から読み込む。いわゆるフィルタとしても働くプログラム。こんな感じでいいか?

 module Main (main) where

 import System
 
 main :: IO ()
 main = do args <- getArgs
           contents <- if (not.null) args
                         then readFile $ head args
                         else getContents
           putStr contents

引数にファイル名を指定

 D:\>runghc catFile.hs hello.txt
 Hello, Haskell.

標準入力から

 D:\>runghc catFile.hs < hello.txt
 Hello, Haskell.

パイプ経由

 D:\>type hello.txt | runghc catFile.hs
 Hello, Haskell.