2013年11月24日日曜日

開発環境

初めてのコンピュータサイエンス(Jennifer CampbellPaul GriesJason MontojoGreg Wilson(著)長尾 高弘(翻訳))の9章(集合と辞書)、9.5(練習問題)、6.をHaskellで解いてみる。

その他参考書籍

9.5(練習問題)、6.

コード(BBEdit)

Sample.hs

{-# OPTIONS -Wall -Werror #-}
import qualified Data.Map as Map

main :: IO ()
main = do 
    putStrLn $ "特定の種類の素粒子を検出する確率を示すMap: " ++
               show elementaryParticles
    putStrLn $ "最も確率の低い素粒子: " ++ (show $ minElementaryParticles
                                                 elementaryParticles)

minElementaryParticles :: (Ord a) => Map.Map k a -> k
minElementaryParticles m = fst $
    foldr1 (\(k, a) (l, b) -> if a < b then
                                  (k, a)
                              else
                                  (l, b)) $ Map.toList m


elementaryParticles :: Map.Map String Double
elementaryParticles = Map.fromList [("ニュートロン", 0.55), ("陽子", 0.21),
    ("中間子", 0.03), ("ミューオン", 0.07), ("ニュートリノ", 0.14)]

入出力結果(Terminal, runghc)

$ runghc Sample.hs
特定の種類の素粒子を検出する確率を示すMap: fromList [("\12491\12517\12540\12488\12522\12494",0.14),("\12491\12517\12540\12488\12525\12531",0.55),("\12511\12517\12540\12458\12531",7.0e-2),("\20013\38291\23376",3.0e-2),("\38525\23376",0.21)]
最も確率の低い素粒子: "\20013\38291\23376"
$

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

0 コメント:

コメントを投稿