指標Σに対して、モデルの集合は |Model[Σ]| となる。適当な集合 K からの写像 K → |Model[Σ]| をインスタンスメーカー〈クリエイター | コンストラクタ | ビルダー〉と呼ぶ。なんらかの忘却射影 U:|Model[Σ]| → K があり、インスタンスメーカーがセクションになっているときが型クラス構造。
型クラス構造には:
- 指標 Σ
- 忘却射影 U
- インスタンスメーカー〈モデルメーカー〉 M
があり。
- U:|Model[Σ]| → K
- M:K ⊇→ |Model[Σ]|
- M;U ⊆ Id_K
適当な忘却射影に対するモデルメーカーが多値であってもよい。インスタンス生成のときは、どの値〈モデル〉が選ばれるかは非決定性になるが、別にかまわない。
型クラスが分かりにくいのは、「型クラス」の意味が:
- 指標
- 指標のモデルクラス(またはモデル圏)
- インスタンスメーカー仕様=指標+忘却射影
のどれか分からないから。インスタンスも:
- 指標のモデル
- インスタンスメーカー〈モデルメーカー〉
- インスタンスメーカーの特定値
のどれか分からないから。