読者です 読者をやめる 読者になる 読者になる

とある使い捨てコード

Haskell
module Main where

main :: IO ()
main = interact ruby

ruby :: String -> String
ruby "" = ""
ruby s = case break ('('==) s of
  (_,[])    -> s
  (xs,_:ys) -> "<ruby><rb>"++xs++"</rb><rp>(</rp><rt>"
               ++ case break (')'==) ys of
                    (_,[])     -> error $ "invalid input: "++s
                    (ys',_:zs) -> ys'++"</rt><rp>)</rp></ruby>" ++ ruby zs