2013年11月11日月曜日

開発環境

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

その他参考書籍

6.5(練習問題)、12.

コード(BBEdit)

Sample.hs

{-# OPTIONS -Wall -Werror #-}

main :: IO ()
main = do
    mapM_ putStrLn $
          map (\(age, bmi) -> "age: " ++ show age ++ ", bmi: " ++ show bmi ++
                              ", risk: " ++
                              [(table !! young age !! heavy bmi)])
              ageAndBmi
                     

ageAndBmi :: [(Int, Double)]
ageAndBmi = [(age, bmi) | age <- [40, 50], bmi <- [20, 25]]

table :: [[Char]]
table = [['高', '中'], ['中', '低']]

young :: Int -> Int
young age | age < 45 = 1
          | otherwise = 0

heavy :: Double -> Int
heavy bmi | bmi < 22.0 = 1
          | otherwise = 0

入出力結果(Terminal, runghc)

$ runghc Sample.hs
age: 40, bmi: 20.0, risk: 低
age: 40, bmi: 25.0, risk: 中
age: 50, bmi: 20.0, risk: 中
age: 50, bmi: 25.0, risk: 高
$

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

0 コメント:

コメントを投稿