このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

Caty: C4エンジン

Catyの構造を大ざっぱにいうと、2つの部分からなっていて、言語処理系とその上で動くWebフレームワークです。この2つを分けて話さないと、なんか混乱や誤解を招きそうだなー、という気がしてきました。例えば、次のような話題はWebとは特に関係がなくて、圏論ベースの処理系の話です。

一方で、拡張子付きURLとかSSLがどうとかは、Web用途だから出てくる話です。

このような2種類の話題にはかなりの隔たりがあるし、相互に独立に議論できるものです。単一の名称「Caty」を使っているのはよろしくないなー、と思いました。

で、何の脈絡もなく「C4エンジン」という名前が思いつきました。S3とかV8とか、「英字1文字+数字1文字」の名称が僕の印象に残っていたのでしょう。そういや、m4という古色蒼然たるマクロ言語もあります(m4きらいだけど)。僕は語源や由来を考えないので、C4は何の略かとか聞かれてもわかりません。

C4エンジンに含まれるものは:

  1. ユーザー定義により、いくらでも拡張できるJSONベースの型システム
  2. 強く型付けされ、ループを持たず停止性が保証できるスクリプト言語 -- Catyスクリプト
  3. ループとevalを持ち、停止性は保証できないが、機能を強化したスクリプト言語 -- ワイルドCatyスクリプト
  4. 基本的なコマンド一式、もちろんコマンドはユーザー定義もできる
  5. 主にストレージIOをサポートするための拡張ポイント -- ファシリティ

デカルト半環圏(Cartesian Semiringal Category)*1との関係は次:

デカルト半環圏 C4エンジン
対象
コマンド
直積 配列構成 and/or オブジェクト構成
直和 排他的ユニオン型とwhen分岐
モナド ファシリティ
クライスリ拡張 ファシリティを含めたコマンドシステム

when分岐は、排他的条件による多方向分岐のことです。モナド類は、普通のモナド以外に、余モナド、両モナドモナド上の加群なども含みます。それに伴ない、クライスリ拡張も一般化されています。

今後僕が、C4といったらそれは、WebフレームワークCatyの実行を縁の下で支えている categorical processor のことです。

*1:以前はデカルト分配圏と呼んでいましたが、最近はステファネスク師の用語法にあわせています。