2013年11月22日金曜日

開発環境

C実践プログラミング 第3版 (Steve Oualline (著)、 望月 康司 (監訳) (翻訳)、谷口 功 (翻訳)、オライリー・ジャパン)の12章(高度な型)、12.1(構造体)、12.2(共用体)、12.3(typedef)、12.4(enum型)、12.5(キャスト)、12.6(ビットフィールドまたは構造体の圧縮)、12.7(構造体配列)、12.9(プログラミング実習)、実習12-3をHaskellで解いてみる。

その他参考書籍

実習12-3.

コード(BBEdit)

Sample.hs

{-# OPTIONS -Wall -Werror #-}

main :: IO ()
main = print ticket

ticket :: Ticket
ticket = Ticket "abcde12345" "fgh" "ijk" (Time 10 20) (Time 14 30)

data Ticket = Ticket {flight :: String, from :: String, to :: String,
                      start :: Time, arrive :: Time}

instance Show Ticket where
    show t = "便名: " ++ flight t ++ '\n':"出発空港コード: " ++ from t ++
        '\n':"到着空港コード: " ++ to t ++ '\n':"出発時間: " ++ (show $ start t) ++
        '\n':"到着時間: " ++ (show $ arrive t)

data Time = Time {hour :: Int, minute :: Int}

instance Show Time where
    show t = (show $ hour t) ++ "時" ++ (show $ minute t) ++ "分"

入出力結果(Terminal, runghc)

$ runghc Sample.hs
便名: abcde12345
出発空港コード: fgh
到着空港コード: ijk
出発時間: 10時20分
到着時間: 14時30分
$

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

0 コメント:

コメントを投稿