2013年11月10日日曜日

開発環境

初めてのコンピュータサイエンス(Jennifer CampbellPaul GriesJason MontojoGreg Wilson(著)長尾 高弘(翻訳))の6章(条件分岐)、6.5(練習問題)、11をHaskellで解いてみる。

その他参考書籍

6.5(練習問題)、11.

コード(BBEdit)

Sample.hs

{-# OPTIONS -Wall -Werror #-}

main :: IO ()
main = do
    putStrLn "a、bともに'酸性です!'と表示される。"
    mapM_ putStrLn $ map (\x -> show x ++ ": " ++ acidity x) [6.4, 3.6]
    putStrLn "c"
    mapM_ putStrLn $ map (\x -> show x ++ ": " ++ acidity1 x) [5.0, 4.0..0.0]

acidity :: Double -> String
acidity ph | ph < 7.0 = "酸性です!"
           | ph < 4.0 = "強酸性です!"
           | otherwise = "酸性ではありません。"

acidity1 :: Double -> String
acidity1 ph | ph < 7.0 = "酸性です!" ++ if ph < 4.0 then
                                          "強酸性です!"
                                      else
                                          ""
           | otherwise = "酸性ではありません。"

入出力結果(Terminal, runghc)

$ runghc Sample.hs
a、bともに'酸性です!'と表示される。
6.4: 酸性です!
3.6: 酸性です!
c
5.0: 酸性です!
4.0: 酸性です!
3.0: 酸性です!強酸性です!
2.0: 酸性です!強酸性です!
1.0: 酸性です!強酸性です!
0.0: 酸性です!強酸性です!
$

{-# OPTIONS -Wall -Werror #-}を記述してるから、細かく型を指定(:: Double)しないと警告がいっぱい出た。慣れるまでは{-# OPTIONS -Wall -Werror #-}の記述を消さずに細かく型を指定していくことに。

0 コメント:

コメントを投稿