Catyの構造を大ざっぱにいうと、2つの部分からなっていて、言語処理系とその上で動くWebフレームワークです。この2つを分けて話さないと、なんか混乱や誤解を招きそうだなー、という気がしてきました。例えば、次のような話題はWebとは特に関係がなくて、圏論ベースの処理系の話です。
一方で、拡張子付きURLとかSSLがどうとかは、Web用途だから出てくる話です。
このような2種類の話題にはかなりの隔たりがあるし、相互に独立に議論できるものです。単一の名称「Caty」を使っているのはよろしくないなー、と思いました。
で、何の脈絡もなく「C4エンジン」という名前が思いつきました。S3とかV8とか、「英字1文字+数字1文字」の名称が僕の印象に残っていたのでしょう。そういや、m4という古色蒼然たるマクロ言語もあります(m4きらいだけど)。僕は語源や由来を考えないので、C4は何の略かとか聞かれてもわかりません。
C4エンジンに含まれるものは:
- ユーザー定義により、いくらでも拡張できるJSONベースの型システム
- 強く型付けされ、ループを持たず停止性が保証できるスクリプト言語 -- Catyスクリプト
- ループとevalを持ち、停止性は保証できないが、機能を強化したスクリプト言語 -- ワイルドCatyスクリプト
- 基本的なコマンド一式、もちろんコマンドはユーザー定義もできる
- 主にストレージIOをサポートするための拡張ポイント -- ファシリティ
デカルト半環圏(Cartesian Semiringal Category)*1との関係は次:
デカルト半環圏 | C4エンジン |
---|---|
対象 | 型 |
射 | コマンド |
直積 | 配列構成 and/or オブジェクト構成 |
直和 | 排他的ユニオン型とwhen分岐 |
モナド類 | ファシリティ |
クライスリ拡張 | ファシリティを含めたコマンドシステム |
when分岐は、排他的条件による多方向分岐のことです。モナド類は、普通のモナド以外に、余モナド、両モナド、モナド上の加群なども含みます。それに伴ない、クライスリ拡張も一般化されています。
今後僕が、C4といったらそれは、WebフレームワークCatyの実行を縁の下で支えている categorical processor のことです。