2013年10月9日水曜日

開発環境

『初めてのプログラミング 第2版』(Chris Pine 著、長尾 高弘 訳、オライリー・ジャパン、2010年、ISBN978-4-87311-469-9)の9章(自作メソッドの書き方), 9.5(練習問題)、askメソッドの改良をHaskellで解いてみる。

その他参考書籍

入出力、IOアクション

コード(BBEdit)

sample.hs

{-# OPTIONS -Wall -Werror #-}

main :: IO ()
main = do
    putStrLn "こんにちは。お忙しいところ……"
    putStrLn ""
    _ <- ask "タコスはお好きですか?"
    _ <- ask "ブリトーはお好きですか?"
    b <- ask "お漏らししますか?"
    _ <- ask "チミチャンガはお好きですか?"
    _ <- ask "ソパピアはお好きですか?"
    putStrLn "あと少しです・・・・・・"
    _ <- ask "オルチャータは好きですか?"
    _ <- ask "フラウタスは好きですか?"
    putStrLn ""
    putStrLn "デブリーフィング:"
    putStrLn "この実験のために……"
    putStrLn ""
    putStrLn $ show b

ask :: String -> IO Bool
ask xs = do
    putStrLn xs
    line <- getLine
    if line == "はい" || line == "いいえ"
    then return $ yesOrNo line
    else do
        putStrLn "「はい」または「いいえ」でお答え下さい。"
        ask xs

yesOrNo :: String -> Bool
yesOrNo "はい" = True
yesOrNo "いいえ" = False
yesOrNo xs = error $ "yesOrNo: " ++ xs

入出力結果(Terminal, runghc)

$ runghc sample.hs
こんにちは。お忙しいところ……

タコスはお好きですか?
はい
ブリトーはお好きですか?
はい
お漏らししますか?
まさか
「はい」または「いいえ」でお答え下さい。
お漏らししますか?
いいえ
チミチャンガはお好きですか?
はい
ソパピアはお好きですか?
はい
あと少しです・・・・・・
オルチャータは好きですか?
はい
フラウタスは好きですか?
はい

デブリーフィング:
この実験のために……

False
$

0 コメント:

コメントを投稿