- 型 ←→ 命題 ←→ 対象
- 関数(要素含む) ←→ 定理(証拠含む) ←→ 射
- 関数コンビネータ ←→ 定理コネクティブ?(言及も命名もされない) ←→ オペレーター/コンビネータ
- リーズニング・コマンド 対応物がないゲーム・コマンド
圏論的に整理するなら
もの〈シング〉 | 操作 |
---|---|
0-射=対象 | 対象コンビネータ |
1-射=射 | 射コンビネータ |
データの計算
もの〈シング〉 | 操作 |
---|---|
データ型 | 型コンビネータ |
関数 | 関数コンビネータ |
論理の証明
もの〈シング〉 | 操作 |
---|---|
命題 | 命題コンビネータ |
定理 | 定理コンビネータ |
必要な背景は次に書いてある。
型コンビネータ〈型構成子 | 型関数〉は、論理コネクティブと対応するから比較的に分かりやすい。関数コンビネータ〈オペレーター〉には:
- 結合〈フル結合〉
- 部分結合
- 直積
- ペアリング/タプリング
- コペアリング/コタプリング
- カリー化/アンカリー化
コマンドは関数コンビネータを使うが、どのシーケントのどの部分に関数コンビネータを適用するかまで指示〈インスラクション〉が必要。コマンドはゲームの状態遷移を引き起こすのであって、単純なオペレーターではない。
推論規則が曖昧なのは:
- 定理=関数を推論規則と呼ぶことがある。
- 定理コンビネータ=関数コンビネータを推論規則と呼ぶことがある。
- リーズニング・コマンドを推論規則と呼ぶことがある。
関数コンビネータは高階関数で表現できるので、定理と定理コンビネータの混同は致し方ないかも知れない。コマンドは完全に状態機械の状態遷移の話で別!
コマンドプログラミングは、状態指向の手続き的プログラミングになる。