HaskellでPerlの<>
30分プログラム、その379。HaskellでPerlの<>(ダイヤモンド演算子)っぽいやつを実現してみる。
Perlの<>は、実にうまくできた演算子で
になる。
これを使うと、catコマンドが、
while(<>){ print; }
で書けるてしまう。これを思いついた人は、天才だと思う。
ちなみにRubyistの人はARGFまたは$<を使うといいと思います。
使い方
-- catコマンド *Main> let cat = argf putStrLn -- headコマンド。Prelude.headと名前が被るので、変えている *Main> let myhead = argf (mapM_ putStrLn . (take 10) . lines)
ソースコード
import System import System.IO argf :: (String -> IO ()) -> IO () argf f = do args <- getArgs case args of [] -> getContents >>= f _ -> mapM readFile args >>= f . concat