2013年12月13日金曜日

開発環境

初めてのコンピュータサイエンス(Jennifer CampbellPaul GriesJason MontojoGreg Wilson(著)長尾 高弘(翻訳))の12章(各種ツール)、12.7(練習問題)、12-7.をHaskellで解いてみる。

その他参考書籍

12.7(練習問題)、12-7.

コード(BBEdit)

Sample.hs

{-# OPTIONS -Wall -Werror #-}

main :: IO ()
main = do
    let xs = map (\(a, b) -> fmap ((average b)==) a) testCase
        n = length . filter ((Just True)==) $ xs
        m = length . filter ((Just False)==) $ xs
        l = length . filter (Nothing==) $ xs
    mapM_ putStrLn ["合格: " ++ show n, "不合格: " ++ show m,
                    "例外: " ++ show l]

average :: [Double] -> Double
average ns = (sum ns) / (fromIntegral $ length ns)

testCase :: [(Maybe Double, [Double])]
testCase = [(Nothing, []),
            (Just 0.0, [0.0]),
            (Just 0.0, [-1.0, 1.0]),
            (Just 1.0, [0.0, 2.0]),
            (Just 2.0, [0.0, 1.0, 2.0, 3.0, 4.0])]

入出力結果(Terminal, runghc)

$ runghc Sample.hs
合格: 4
不合格: 0
例外: 1
$

慣れるまでは{-# OPTIONS -Wall -Werror #-}の記述を消さずに細かく型を指定していくことに。

0 コメント:

コメントを投稿