ゴチャゴチャとメモ。
指標の同義語類義語
- シグネチャ@ML
- インターフェイス@オブジェクト指向言語
- コンセプト@C++
- 型クラス@Haskell
- 型クラス@Coq
- モジュール@Objファミリー
手続きの同義語類義語
- ファンクタ@ML
- アダプター@デザインパターン
- 型パラメータ付きクラス@オブジェクト指向言語
リテラル手続きの同義語類義語
- ストラクチャ@ML
- 構造体@C系言語
- オブジェクト@JSON
- クラス@オブジェクト指向言語
- ライブラリモジュール@多くのプログラミング言語
部分手続きの同義語類義語
- 抽象クラス@オブジェクト指向言語
- 延期クラス@Eiffel
部分手続きは、挿入〈insertion〉を左脚とするクライスリ圏のスパンなので、ナローイングを左余脚とする手続きの圏のコスパン。スパンの拡張=コスパンの余拡張〈持ち上げ〉を、どちらも拡張を呼ぶ。
手続きをソフト実装、モデルをハード実装とも呼ぶ。単に実装といった場合はソフト実装。
- モデル=ハード実装
- 手続きを=ソフト実装=実装
指標の構文
| 伝統的 | 圏論的 |
|---|---|
| sort | 0-mor |
| operation | 1-mor |
| equation | 2-mor |
| value | 1-mor |
| predicate | 1-mor |
signature OrderedMonoid {
sort U
operation m:(U, U) → U
value e: U
predicate (≦):(U, U)
// ...
}
signature OrderedMonoid {
0-mor U
1-mor m:U×U → U
1-mor e:Unit → U
1-mor (≦):U×U → Bool
// ...
}基本データ型は、MLのデータ型を先頭大文字:
- Int
- Char
- Real
- String
- Bool = {True, False}
他に、
- Unit = Void
- Nat
- Never
手続きの構文
procedure 名前 produces 余域指標 from 域指標 {本体}
procedure 名前 implements 余域指標 from 域指標 {本体}略記規則
- 無名指標では名前を省略可能。signature {...}
- 指標が入る文脈では signature を省略可能。{...}
- 1-宣言文(コロン1個)先頭の value を省略可能 {x:X, y:Y }
- 基本型の {_:T} は裸の名前 T でよい。
- 基本型 S, T の {_1:S, _2:T} は (S, T) でよい。
procedure norm produces Real from (Real, Real) {
_ := sqrt(_1^2 + _2^2)
}signature XY {
value x:Real
value y:Real
}
sinature Z {
value z:Real
}
procedure norm produces Z from XY {
z := sqrt(x^2 + y^2)
}さらなる省略規則
- from と produces の順序はどうでもよい。
- produces は -> で置き換え可能。
- from は省略可能。
- _ := は省略可能。
procedure norm from (Real, Real) -> Real {
sqrt(_1^2 + _2^2)
}
procedure norm (Real, Real) -> Real {
sqrt(_1^2 + _2^2)
}
procedure norm -> Real (Real, Real) {
sqrt(_1^2 + _2^2)
}