これはいいぞ! ラムダハウス

デカルト閉復圏とラムダ計算 - (新) 檜山正幸のキマイラ飼育記 メモ編ラムダ図 - (新) 檜山正幸のキマイラ飼育記 メモ編 の続き。とても良い描画法を思いついた。

青で書いているのは黒がなかったせい。

ラムダハウスは関手ボックス/関手ストライプ/オペレータボックスなどと同じ描画法。復圏のなかに別な描画法の領域を埋め込んで描く。領域の形がお家の形なのでラムダハウス〈lambda house〉と呼ぶ。

ラムダハウスの外の世界はデカルト閉復圏=閉クローン。復射のプロファイルは直観主義シーケント〈LJシーケント〉として書ける。

外の世界では:

テキスト
ワイヤー 論理式、型
ケーブル 論理式リスト、型コンテキスト
ノード、ツリー 証明・推論ルール、関数
ヘッジ 証明リスト、関数リスト
ダイヤグラム書き換え リーズニング、タクティク、スクリプト

ラムダハウスは上部の屋根と下部の部屋からなる。屋根をラムダノード〈lambda node〉、部屋を指数ボックス〈exponential box〉と呼ぶ。

ラムダノード内はベンディングされたワイヤーを配置して、指数ボックス内には右指数配置されたワイヤー達と反変にされた復射(逆行する)と共変の射を配置する。共変の射はラムダハウスの外で結合しても同じ効果が得られる。反変の逆行射は、ラムダ抽象される前に結合しても同じ効果が得られる。

必要がなければ、指数ボックスを省略してもよい。そのときは、ラムダハウスは台形になる。ラムダハウスへの入力がないときは、屋根=ラムダノードは三角で描く。いずれにしても、ラムダハウスは外から見ると一個の復射ノードに見える。

ラムダハウスに対する操作は、ラムダ抽象と左評価と右評価。

テキスト式 論理
ワイヤーベンディング ラムダ抽象 含意導入、演繹定理
右評価、右リンク積 関数適用 含意消去、モーダスポネンス
左評価、左リンク積 関数逆適用 含意消去、モーダスポネンス

慣れれば、ラムダハウスの境界を描かなくてもよいが、ラムダハウスを意識しないのが混乱の原因


ついでに書いておくが、関数型プログラミング言語は関数を扱えない。唯一扱える関数が評価で、それは処理系が実装している。プログラマは関数を定義できない。定義できるのは関数データ。関数データ〈関数オブジェクト〉を圏論で言えば、ポインティング射。つまり、一般の射を定義できるのではなくて、ポインティング射だけを定義できる。2つのポインティング射(のデカルトペア)に対して評価射を後結合する行為が関数適用。

関数データaを関数にしたいなら a と腰にカップ(フル反カリー化演算子)を付ける必要がある。