リーズニングまでの4レベル

  1. 型 ←→ 命題 ←→ 対象
  2. 関数(要素含む) ←→ 定理(証拠含む) ←→ 射
  3. 関数コンビネータ ←→ 定理コネクティブ?(言及も命名もされない) ←→ オペレーター/コンビネータ
  4. リーズニング・コマンド 対応物がないゲーム・コマンド

圏論的に整理するなら

もの〈シング〉 操作
0-射=対象 対象コンビネータ
1-射=射 射コンビネータ

データの計算

もの〈シング〉 操作
データ型 型コンビネータ
関数 関数コンビネータ

論理の証明

もの〈シング〉 操作
命題 命題コンビネータ
定理 定理コンビネータ

必要な背景は次に書いてある。

型コンビネータ〈型構成子 | 型関数〉は、論理コネクティブと対応するから比較的に分かりやすい。関数コンビネータ〈オペレーター〉には:

  1. 結合〈フル結合〉
  2. 部分結合
  3. 直積
  4. ペアリング/タプリング
  5. コペアリング/コタプリング
  6. カリー化/アンカリー化

コマンドは関数コンビネータを使うが、どのシーケントのどの部分に関数コンビネータを適用するかまで指示〈インスラクション〉が必要。コマンドはゲームの状態遷移を引き起こすのであって、単純なオペレーターではない。

推論規則が曖昧なのは:

  • 定理=関数を推論規則と呼ぶことがある。
  • 定理コンビネータ=関数コンビネータを推論規則と呼ぶことがある。
  • リーズニング・コマンドを推論規則と呼ぶことがある。

関数コンビネータは高階関数で表現できるので、定理と定理コンビネータの混同は致し方ないかも知れない。コマンドは完全に状態機械の状態遷移の話で別!

コマンドプログラミングは、状態指向の手続き的プログラミングになる。