データ型の数学基礎理論として代数
データ型の数学基礎理論として代数は、プログラミング/モデリングにおける最も基本的な代数の使い方である。ここではまず、データ型の数学基礎理論として代数を見る。
1. まず、代数データ型とは
データ型と代数データ型(Algebraic Data Type)
Wikipediaによると,
代数的データ型(英: Algebraic data type)とはプログラミングにおけるデータ型の一種で、他のデータ型を当該代数的データ型のコンストラクタで包んだデータを値とする。この包まれたデータはコンストラクタの引数である。他のデータ型と異なり、コンストラクタが実行されることはなく、データを操作するにはパターンマッチを使ってコンストラクタからデータを抜き出さねばならない。
最も典型的な代数的データ型は2つのコンストラクタからなるリストである。1つは空のリストを表す Nil または []、もう1つは Cons、::、: などと表記されるコンストラクタで、短いリストに新たな要素を組み合わせるのに使われる(例えば (Cons 1 '(2 3 4)) あるいは 1:[2,3,4])。
代数的データ型の特殊な例として、プロダクト型(1つのコンストラクタだけを持つ)と列挙型(引数なしの多くのコンストラクタを持つ)がある。代数データ型は複合型(他のデータ型を組み合わせて形成される型)の一種である。
コンストラクタなしでモジュール外にエクスポートされた場合、代数的データ型は抽象データ型の一種でもある。そのような型の値の操作は、その型と同じモジュールで定義された関数を使ってのみ可能となる。
集合論において代数的データ型と等価なものとして非交和がある。この集合の各元はタグ(コンストラクタと等価)とそのタグに対応する型のオブジェクト(コンストラクタの引数と等価)で構成される。
代数データ型の理論とは,