or1ko's diary

日々を書きます

15

言語処理100本ノック 2015

15. 末尾のN行を出力
自然数Nをコマンドライン引数などの手段で受け取り,入力のうち末尾のN行だけを表示せよ.確認にはtailコマンドを用いよ.

> tail -n 10

15.hs

import System.Environment

main = do
  num <- getArgs >>= return . (read :: String -> Int) . head 
  body <- getContents 
  putStrLn $ unlines $ reverse $ take num $ reverse $ lines body

14.hsを流用したが、
このプログラムだと、入力された文字列を瞬間的に全部保持する!?