Hatena::ブログ(Diary)

みずぴー日記 Twitter

2010-03-03(水)

文字の間にwを挟む関数

| 文字の間にwを挟む関数を含むブックマーク

30分プログラム、その739。文字の間にwを挟む関数を書いてみました。

文字の間に文字を挟むだけなら、intersperseというずばりそのものの関数があります。が、今回は文字列を挟みたかったので自分で書きました。

あと、日本語の文字列(UTF8)を扱うためにutf8-stringパッケージを使ってます。

使い方

$ ./interperse ' w ' うはおけ
う w は w お w け

ソースコード

import System
import qualified System.IO.UTF8  as U
import Codec.Binary.UTF8.String

insertMid :: [a] -> [a] -> [a]

insertMid _   []    = []
insertMid _   [x] = [x]
insertMid sep (x:xs) = x:(sep ++ insertMid sep xs)

main = do sep:s:_ <- getArgs
          U.putStrLn $ insertMid (decodeString sep) (decodeString s)

参考

nobsunnobsun 2010/03/05 08:48 interMid sep = concat . intersperse sep . map (:[])

mzpmzp 2010/03/05 20:54 うおお。すごい。
map (:[])がクールですね。

Connection: close