アドホック選択

後で追加修正するかも。

指標の一覧:

名前 提供記号 ひとこと
Magma * 乗法記号使ったマグマ
UnitalMagma *, 1 単位的マグマ
MonoidAste *, 1 モノイド
MonoidPlus +, 0 モノイド
Group *, 1, ~
AbGroupPlus +, 0, - アーベル群
Ring +, 0, -, *, 1 可換とは限らない環
SemiRing +, 0, *, 1 可換とは限らない半環
CommRing +, 0, -, *, 1 可換環

指標の忘却関係

  1. UnitalMagma →Magma
  2. MonoidAste → UnitalMagma
  3. Group → MonoidAste
  4. AbGroupPlus → MonoidPlus
  5. SemiRing → Ring
  6. CommRing → Ring

集合の一覧:

名前 ひとこと
Real 実数
String 文字列
Vect3 3次元数ベクトル
SqMat[n] n次元数正方行列

※ SqMat = square matrix

二項演算子アドホック選択テーブル、指標を選ぶ:

+ *
Real CommRing CommRing
String MonoidPlus UnitalMagma
Vect3 AbGroupPlus Magma
SqMat[n] Ring Ring

※選択テーブル=ルックアップ・テーブル

単項演算子アドホック選択テーブル、指標を選ぶ:

~ -
Real なし CommRing
String なし なし
Vect3 なし AbGroup
SqMat[n] なし Ring

定数のアドホック選択テーブル、指標を選ぶ:

0 1
Real CommRing CommRing
String MonoidPlus UnitalMagma
Vect3 AbGroupPlus なし
SqMat[n] Ring Ring

実装の選択テーブル、指標の実装を選ぶ:

Real String Vect3 SqMat[n]
Magma なし 継承 Vect3Cross なし
UnitalMagma なし StringMult なし なし
MonoidAste なし なし なし なし
MonoidPlus なし StringAdd なし なし
Group なし なし なし なし
AbGroupPlus なし なし Vect3Add なし
Ring 継承 なし なし AqMatRing[n]
SemiRing 継承 なし なし 継承
CommRing RealRing なし なし なし