ハイフンで区切られた文字をキャピタライズ
ハイフンで区切られた文字をキャピタライズ - 只今Ruby勉強中 - RubyistをHaskellで書いてみました。あまり複雑なことをせずにシンプルにシンプルに書いてみました。
それにしてもWebのRuby関連のページはほどよい例題がいっぱいあってとても参考になります。
module Main (main) where import Data.Char (toUpper, toLower) tail' :: [a] -> [a] tail' [] = [] tail' xs = tail xs split :: Eq a => a -> [a] -> [[a]] split _ [] = [] split c xs = let (xs1, xs2) = span (/= c) xs in xs1 : split c (tail' xs2) join :: a -> [[a]] -> [a] join _ [] = [] join _ [x] = x join c (x : xs) = x ++ c : join c xs capitalize :: String -> String capitalize [] = [] capitalize (x : xs) = toUpper x : map toLower xs wordCapitalize :: String -> String wordCapitalize = join '-' . map capitalize . split '-' main :: IO () main = do print $ wordCapitalize "in-reply-to" print $ wordCapitalize "X-MAILER"
実行例:
$ ./cap.exe "In-Reply-To" "X-Mailer"