皆さん、こんばんは。(^^
syujuです。
早速ですが、件名にあるとおり、文字列のフォーマットで悩んでいます。
c言語ではprintf関数などが用意されていると思いますが、Haskellでの定番は存在するのでしょうか。
タプルで与えられる年月日データ(Int,Int,Int)をyyyy/mm/dd のように整形する為に使用したいと思っています。
(1月の場合は 01のように0でパッドします)
軽く探してみたのですが、このような用途にふさわしい関数を発見できなかったので、もし便利な関数があるようでしたら教えてください。m( _ _ )m
ちなみに、現在は以下のように関数を定義して使用しています。我ながら酷い感じになのですが。
(西暦は必ず4桁なのでshowを使うだけでよいのですが、あえて関数を使って統一感をだしてみました。関数名は適当です)
formatDate :: (Int,Int,Int) -> String
formatDate (y,m,d) = prettyInt y 4 '0' ++ "/"
++ prettyInt m 2 '0' ++ "/"
++ prettyInt d 2 '0'
prettyInt :: Int -> Int -> Char -> String
prettyInt val width padChar | length str >= width = str
| otherwise = [ padChar | i <-[1..(width - (length str))] ]] ++ str
where
str = show val
++や生成器を多用しているので、たぶん非効率だと思いますが、代替手段が思い浮かばない次第です・・・。
もし宜しければ、このコードに関してもアドバイス頂けると嬉しいです。
では。