9章練習問題

deriving宣言

Line型はShowクラスのインスタンスなのであとは処理系が適宜クラスメソッドを用意しろ、という意味。どういうことですか。。。

data Line = Line Int String deriving Show

main = do print $ Line 2 "fjadsfkas"
出力
Line 2 "fjadsfkas"

フィールドラベルを付けてみる

data Line = Line { number :: Int, string :: String } deriving Show

main = do print $ Line 2 "fjadsfkas"
出力もラベル付きな感じになった
Line {number = 2, string = "fjadsfkas"}

Lines型のタプルをリストに放りこんで出力させた

data Line = Line { number :: Int, string :: String } deriving Show

myLines :: [Line]
myLines = [(Line 4 "4th line"),
           (Line 3 "3th line"),
           (Line 9 "9th line")
          ]

main = do print $ Line 2 "fjadsfkas"
          print $ myLines
リストで出てきた
Line {number = 2, string = "fjadsfkas"}
[Line {number = 4, string = "4th line"},Line {number = 3, string = "3th line"},Line {number = 9, string = "9th line"}]