2013年10月30日水曜日

開発環境

C実践プログラミング 第3版 (Steve Oualline (著)、 望月 康司 (監訳) (翻訳)、谷口 功 (翻訳)、オライリー・ジャパン)のⅡ部(単純なプログラミング)の9章(変数スコープおよび関数)、9.4(構造かプログラミング)、9.5(再帰)、9.7(プログラミング実習)、実習 9-6をHaskellで解いてみる。

その他参考書籍

9-6.

コード(BBEdit)

Sample.hs

{-# OPTIONS -Wall -Werror #-}

main :: IO ()
main = do
    putStrLn "文字列を入力"
    line <- getLine
    if line == "" then
        return ()
    else
        do let a = replace line
           mapM_ putStrLn ["置換前: " ++ line, "置換後: " ++ a]
           main


replace :: String -> String
replace = foldr (\x acc -> if x == '-' then
                               '_':acc
                           else
                               x:acc)
                 ""

入出力結果(Terminal, runghc)

$ runghc Sample.hs
文字列を入力
practical-c
置換前: practical-c
置換後: practical_c
文字列を入力
kamimura-practical-c
置換前: kamimura-practical-c
置換後: kamimura_practical_c
文字列を入力
-kamimura
置換前: -kamimura
置換後: _kamimura
文字列を入力
kamimura-
置換前: kamimura-
置換後: kamimura_
文字列を入力
-
置換前: -
置換後: _
文字列を入力
-----
置換前: -----
置換後: _____
文字列を入力
--__
置換前: --__
置換後: ____
文字列を入力

$

0 コメント:

コメントを投稿