2013年11月6日水曜日

開発環境

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

その他参考書籍

6.5(練習問題)、6、7.

コード(BBEdit)

Sample.hs

{-# OPTIONS -Wall -Werror #-}

main :: IO ()
main = do
    putStrLn "6."
    mapM_ putStrLn $ map (\x -> "x = " ++ show x ++ " x = |x|: " ++
                                (show $ notMinus x))
                         nums
    putStrLn "7."
    mapM_ putStrLn $ map (\(a, b) -> "a = " ++ show a ++ ", b = " ++ show b ++
                                     " different a b: " ++
                                      (show $ different a b))
                         numPairs

notMinus :: Int -> Bool
notMinus a | a == abs a = True
           | otherwise = False

different :: (Eq a) => a -> a -> Bool
different x y | x /= y = True
              | otherwise = False

nums :: [Int]
nums = [-1..1]
numPairs :: [(Int, Int)]
numPairs = [(a, b) | a <- nums, b <- nums]

入出力結果(Terminal, runghc)

$ runghc Sample.hs
6.
x = -1 x = |x|: False
x = 0 x = |x|: True
x = 1 x = |x|: True
7.
a = -1, b = -1 different a b: False
a = -1, b = 0 different a b: True
a = -1, b = 1 different a b: True
a = 0, b = -1 different a b: True
a = 0, b = 0 different a b: False
a = 0, b = 1 different a b: True
a = 1, b = -1 different a b: True
a = 1, b = 0 different a b: True
a = 1, b = 1 different a b: False
$

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

0 コメント:

コメントを投稿