行末の空白を自動で削除

30分プログラム、その431。行末の空白を削除するプログラム。
今流行の.emacs & .vimrc - グニャラくんのグニャグニャ備忘録@はてなを設定したら、行末の空白が気になりだしたので、一括して削除するためにプログラムを作ってみた。ホントは、elispでやるべきな気がしてる。

使い方

# 空白を.で表示してみる
$ cat hoge | sed 's/ /./g'
aaa.
bbb...
cc

# ちゃんと削除されている
$ strip-blank hoge | sed 's/ /./g'
aaa
bbb
cc

ソースコード

import System
import System.IO

argf :: (String -> IO ()) -> IO ()
stripLine :: String -> String
strip :: String -> String

argf f = do args <- getArgs
            case args of
              [] ->
                  getContents >>= f
              _ ->
                  mapM readFile args >>= f . concat

stripLine = reverse.dropWhile (== ' ').reverse
strip = unlines.map stripLine.lines

main = argf (putStr.strip)