文字列の先頭と末尾にあるスペースの削除

30分プログラム、その614。文字列の先頭と末尾にあるスペースの削除 via http://gauc.no-ip.org/awk-users-jp/blis.cgi/DoukakuAWK_174

元のやつでは、正規表現による文字列置換をしてるけど、ここではdropWhileを使ってみた。別に正規表現が嫌いという分けじゃなくて、こっちのほうが手軽なだけ。
あと、特に意図はしてないけど、ポイントフリースタイルになった。やったね。

使い方

$ echo "\t test \t " | od --format=a
0000000  ht  sp   t   e   s   t  sp  ht  sp  nl
0000012
$ echo "\t test \t " | ./trim | od --format=a
0000000   t   e   s   t  sp  ht  sp  nl
0000010

ソースコード

import Test.HUnit.Base
import Test.HUnit.Text

ltrim :: String -> String
rtrim :: String -> String
trim :: String -> String

ltrim = reverse.rtrim.reverse
rtrim = dropWhile (\x -> x == ' ' ||  x == '\t')
trim  = rtrim.ltrim

main = interact trim

-- check
test1 = "foo   \t" ~=? rtrim "\t   foo   \t"
test2 = "\t   foo" ~=? ltrim "\t   foo   \t"
test3 = "foo"    ~=? trim "\t   foo   \t"
check = runTestTT $ TestList [test1,test2,test3]