ARGF
RubyのARGFと似たようなことを、Haskellでやってみる。
module ARGF where import System.Environment withARGF thunk = do args <- getArgs case args of [] -> getContents >>= thunk _ -> mapM_ (\f -> readFile f >>= thunk) args
ARGF.hsとして保存。
これを使ってcatを書くとこんな感じ。
% runghc cat.hs cat.hs import ARGF main = withARGF putStr % echo aaa | runghc cat.hs aaa