- -単位型(unit type)を構成できる。
- -要素を構成できる。
- -要素に対し、と定義される。
[000B] レコード型
レコード型は構造を記述するのに便利な型である。本書では、組み込み型としては単位型と対型を導入し、レコード型は記法として実現する。これは体系を単純なものに抑えるためである。
単位型は要素を丁度一つ持つ型である。
対型は要素の対を要素に持つ型である。
を階数、を型、を型の族とする。
- -対型(pair type)を構成できる。
- -要素とに対し、対(pair)を構成できる。
- -要素に対し、射影(projection)とを構成できる。
- -要素とに対し、, と定義される。
- -要素に対し、と定義される。
を階数、を型とする。型をと定義する。
- -は右結合の演算子である。例えば、はと読む。
- -の結合は弱い。例えば、はと読む。
対型を繰り返し使って得られる型の要素は何らかの構造だと考えられる。構造の成分に名前をつけるための記法を導入する。
記法を次のように定める。
- -はのこととする。
- -はのこととする。
- -はのこととする。
- -はのこととする。
- -がの時、はのこととする。
- -がからのいずれかの時、はのこととする。
大きなレコード型を定義する際には、文章内でと書く代わりに縦に並べて
- -
- -
- -
を階数、を型とする。型をと定義する。の要素がある時、とは論理的に同値(logically equivalent)であると言う。反射律、対称律、推移律を次のように構成できる。
- -
- -
- -
を階数、を型とする。関数ととがある時、各とは論理的に同値であることを確かめよ。
を階数とする。型を次のレコード型と定義する。
- -
- -
を階数とする。型を次のレコード型と定義する。
- -
- -
[008A]と[008B]で名前の衝突がある()が、型によってどの構造について話しているのか分かるので混乱は無いだろう。
を階数とする。型を次のレコード型と定義する。
- -
- -
- -
対型に関する基本的な関数をいくつか定義する。
を階数、を型、を型の族、を型の族とする。
- -関数に対し、カリー化(currying)
をと定義する。 - -関数に対し、逆カリー化(uncurrying)
をと定義する。
を階数、を型、を型の族、を型の族とする。
- -関数をと定義する。
- -関数をと定義する。
を階数、を型とする。関数をと定義する。
を階数、を型、を型の族、を型の族とする。
- -関数をと定義する。
- -関数をと定義する。
を階数、を型とする。関数であって、任意のに対してかつとなるものを構成せよ。