【Haskell】Parsecで文字列置換してみた
青木峰郎著「ふつうのHaskellプログラミング」を読み終わったので、Parsecで文字列置換するプログラムをつくってみました。
「yyyy/mm/dd」→「日付」と置換するプログラムです。
import Text.Parsec import Text.Parsec.String main :: IO () main = do cs <- getContents putStr $ doSomething cs date :: Parser String date = do fourDigit char '/' twoDigit char '/' twoDigit return "日付" fourDigit :: Parser String fourDigit = do d1 <- digit d2 <- digit d3 <- digit d4 <- digit return [d1, d2, d3, d4] twoDigit :: Parser String twoDigit = do d1 <- digit d2 <- digit return [d1, d2] text :: Parser [String] text = many component where component = do date <- try(date) return date <|> do c <- anyChar return [c] doSomething :: String -> String doSomething cs = case parse text "" cs of Right xs -> concat xs Left err -> ""