ようこそ。睡眠不足なプログラマのチラ裏です。

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型の値が生成されるというわけ。