文字の間に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)