2013年12月14日土曜日

開発環境

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

その他参考書籍

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

コード(BBEdit)

Sample.hs

{-# OPTIONS -Wall -Werror #-}

import Data.List

main :: IO ()
main = mapM_ putStrLn $ map (\(a, b, c) -> if isSorted b == c then
                                               show True
                                           else
                                               show False ++ a)
                            testLists

isSorted :: (Ord a) => [a] -> Bool
isSorted ns = ns == sort ns 

testLists :: [(String, [Int], Bool)]
testLists = [("空のリスト", [], True),
             ("要素が1つのリスト", [10], True),
             ("要素が2つのソート済リスト", [1, 2], True),
             ("要素が2つの逆順リスト", [2, 1], False),
             ("全て等しいよそのリスト", [10, 10], True),
             ("先頭がソートされてないリスト", [10, 1, 2, 3, 4], False),
             ("真ん中がソートされていないリスト", [1, 2, 10, 4, 5], False),
             ("末尾がソートされていないリスト", [1, 2, 3, 4, 0], False)]

入出力結果(Terminal, runghc)

$ runghc Sample.hs
True
True
True
True
True
True
True
True
$

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

0 コメント:

コメントを投稿