2013年11月15日金曜日

開発環境

初めてのコンピュータサイエンス(Jennifer CampbellPaul GriesJason MontojoGreg Wilson(著)長尾 高弘(翻訳))の7章(反復)7.7(練習問題)、7、8、9、10.をHaskellで解いてみる。

その他参考書籍

7.7(練習問題)、7、8、9、10.

コード(BBEdit)

Sample.hs

{-# OPTIONS -Wall -Werror #-}
import Text.Printf

main :: IO ()
main = do
    putStrLn "7,"
    mapM_ (printf "%-7s\n") ts
    putStrLn "8."
    mapM_ (printf "%7s\n") ts
    putStrLn "9. 省略"
    putStrLn "10."
    putStrLn "a."
    print $ a (4 / 100)
    putStrLn "b."
    print $ b rate1 rate2

ts :: [String]
ts = map (`replicate`'T') [1..7]

a :: Double -> Int
a rate = ceiling $ logBase (rate + 1) 1.25

b :: Double -> Double -> Int
b r1 r2 = ceiling $ log (110 / 100) / (log $ (r1 + 1) / (r2 + 1))

rate1 :: Double
rate1 = rate2 + 3 / 100

rate2 :: Double
rate2 = 4 / 100

入出力結果(Terminal, runghc)

$ runghc Sample.hs
7,
T      
TT     
TTT    
TTTT   
TTTTT  
TTTTTT 
TTTTTTT
8.
      T
     TT
    TTT
   TTTT
  TTTTT
 TTTTTT
TTTTTTT
9. 省略
10.
a.
6
b.
4
$

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

0 コメント:

コメントを投稿