代数的データ型その9
共用体スタイルについて。
data PTItem = Pram Int | Text String
このように複数のデータコンストラクタのうちのいずれかを使うという書き方ができます。どのデータコンストラクタを使ったかの判別はパターンマッチで行えます。
data PTItem = Param Int | Text String isText :: PTItem -> Bool isText (Text _) = True isText (Param _) = False text :: PTItem -> String text (Text s) = s text (Param _) = "" param :: PTItem -> Int param (Text _) = 0 param (Param p) = p val1 = Param 1 val2 = Text "Val2" main = do print $ isText val1 -- False print $ isText val2 -- True print $ text val1 -- "" print $ param val1 -- 1 print $ text val2 -- "Val2" print $ param val2 -- 0
これだけだとあまり使い道はなさそうですが、次の再帰的な型を覚えるといろいろ応用が利きそうです。再帰的な型については次回。