Haskellのお勉強 その14
列挙型スタイルで代数的データ型を使う
例えばファイルを開くときのモード「ReadOnly」「WriteOnly」「ReadWrite」の3つの状態を表すような型を定義したいような場合、次のような代数的データ型を使うことができる。
data OpenMode = ReadOnly | WriteOnly | ReadWrite
ここで出てくる「|」は、もちろん「OR」の意。
つまり、このdata宣言は、「OpenMode型に属する値は、ReadOnlyまたはWriteOnlyまたは
ReadWriteのいずれかである」と宣言していることを意味している。
列挙型スタイルで代数的データ型を定義した場合は、値を直接書くことでその型の値を得ることができる。
つまり、「ReadOnly」「WriteOnly」「ReadOnly」のいずれもデータコンストラクタということ。
列挙型スタイルで定義されている型として代表的なものに、Bool型がある。
Bool型は、Preludeモジュール内で次のように定義されている。
data Bool = True | False deriving (Eq, Ord)
deriving以降はまた後で出てくるからとりあえず気にしないこととして、
Bool型は「True」または「False」というデータコンストラクタから構成されていることがわかる。
なので、Haskellのコード中でTrueやFalseと書けばBool型の値が生成されるというわけ。