Caty
とりあえず二部グラフに対応する行列の場合に定式化する。 二部グラフより複雑な有向グラフの場合も考える。 二部グラフより複雑な場合も行列計算に帰着する。 ポートとポートバインディングを考える。 行列より一般的なテンソル計算を考える。 インデックス…
とりあえず、クライアント/サーバーのときの事実をメモしておく。Cはクライアント側エンドポイント(状態、境界オブジェクト)の集合、Sはサーバー側エンドポイント(アクション、コントロールオブジェクト)の集合とする。CとSは排他的になっている。CとS…
イカンイカン、イカンイカンイカン!!形式化/抽象化をしないと、いつまでたってもハッキリしないグダグダ状態が続く。リクエストディスパッチの基本は、いちおう「集合と論理の練習問題: ツリー状の集合族 - 檜山正幸のキマイラ飼育記 」に書いた。僕はオ…
デカルト半環圏 dom -- 入力型 cod -- 出力型 id -- pass 結合 -- パイプ、セミコロン 直積 -- 配列、オブジェクト、タグ付きデータ 直積単位 -- null、undefined、その他シングルトン 直和 -- when, case, cond 直和単位 -- never リスト構造 リスト型 -- […
M, Nなどはモノイドとして、モノイダルスタンピングモナドを更新モナドとも呼ぶことにする。Catyの更新ファシリティ(updates, usesで宣言される)はすべて更新モナド。Mによる更新モナドのCベースのクライスリ圏を C[M] と書くことにすると: C[1] = C C[M×…
言語仕様はtry/catchとしたが、やはり単独のtryを考えたほうが扱いやすい。が、注意すべきはtryが関手にはなってない点だ。関手ではないが圏論的オペレーター。他の例: eachは、each(f;g) = each(f);each(g) の意味で関手性を持つ。クライスリ埋め込み関手…
説明は: https://confluence.atlassian.com/display/BITBUCKET/Managing+bitbucket+Services https://confluence.atlassian.com/display/BITBUCKET/Setting+Up+the+bitbucket+POST+Service http://brandonsummers.name/blog/2012/02/10/using-bitbucket-for…
Caty名前に関する推論をCatyScriptで書くと面白いかもしれない。
Catyの型システム/コマンドシステムの機能を総動員すると、Webを使わないハイパーメディア・アプリケーションのハイパースキーマが完全に書ける。つうか先週末に書いてみた。その解説をする。ここ2,3日で定義を変えたりしたところもあるが、オリジナル(つ…
絵を描いたので、今日中に説明を書く。いやー、さらに先延ばしかな。でも、下に別な記事を書いた。
絵を描いたが、説明を書くのが億劫。明日とかに。
コマンドのクロージャとよく似たデータだが、次のようなデータを考える。 { "arg0": univ, "args": [univ*], "opts": {*:univ?}(propNameFormat="name"), "additionalEnv": {*:univ?}(propNameFormat="name"), "input": univ }注意:arg0とargsを一緒にした…
ずっと以前から、ハイパーメディアに関して「トリガー」という言葉と概念を使っている。「ハイパーリンク」とか「アンカー」と言わずに、あえて「トリガー」と呼んでいたのにはワケがあるのだが、どうもそのへんがうまく説明できないでいた。ハイパーメディ…
エソラングっぽいと思っていたCatyScriptだが、“慣れ”とは恐ろしいもので読みやすく感じる。余りにもバイアスがあるから、客観的にreadableなモノなのかどうか? の判断は付かない。まだ実装してない begin/repeat を使った例(自己forward版は実際に動かし…
Catyの内部構造を知っている人間はごく少数(約二名)だから、それについてここで書いてもしょうがない気もするが、いずれ知っている人が増えることを期待して …。まず、mafsは、ストレージ・バックエンドがなんであっても同じインターフェイスを提供するこ…
記法としては、通常の集合論/圏論の記法よりは、CatyScriptの構文に近い書き方をする。が、最初は一般的かつ抽象的な状況設定、すぐ後で具体的なスクリプトで書く。Cは、なんか具体的な対称モノイド圏だとする。Cは集合圏の部分圏と仮定してもいい(別にな…
トータルマトリックスは、リソースインスタンス(リソースID)セット(横軸)とアクションセット(縦軸)の上にエントリーポイントを配置したものだが、成分の値であるエントリーポイントを全部集めた集合をサービス空間と呼ぶことにする。通常、状態(state…
クライアント側の状態遷移も「リンク」と呼ぶと誤解が生じる。まー、そりゃそうだ。普通、状態遷移はリンクとは言わないからね。ハイパーリンクのトラバース(たどり)によって、その結果としてトランジションが生じるのだから、ハイパートランジション。と…
モグラ:アンビエントが持つメタオブジェクトの集合を構造化した有向グラフ。大分類して三種類のノード(名前空間コンテナ、名前空間、その他)を持つ。エイリアス辺によりツリーではないグラフとなる。エイリアス辺を除くとツリー、これはスパニングツリー…
「Webに関する概念と用語」にいくつか書いたけど、もっとある。色々ある。ハイパーリンクは難しい(http://d.hatena.ne.jp/m-hiyama/20100901/1283312114)と嘆いたことがあるけど、今まで、ほとんどマトモな定式化はなかったんじゃなかろうか。定式化に際し…
可読性に難ありだったCatyScriptもけっこう改善された。普通に読める。最近書いたスクリプト。二百数十行、30行限界説を唱えていた頃に比べると…… // -*- coding: utf-8 -*- /** * * リソースマトリックス (Resource Matrices) の操作 * */ module resmat; /…
いろいろと増えて、重複や曖昧さがある。○がついてるのは普通の言葉。△は普通の意味を変えている。 リソースクラス リソースインスタンス リソースインスタンス・ストレージ クエリーパラメータ ○ セグメントパラメータ リクエストボディ ○ アクション アク…
Catyのレイフィケーションを整備してメタプログラミング環境を作る。そもそも何をレイフィケーションするのか? -- メタレベルにある構造をキチンと定義する必要がある。最近、「メタレベルにある構造」をモグラ(MOGra)という名前で呼ぶことにした。Metaob…
こういう絵になる。NSは名前空間の略称。NSコンテナはいくつかの名前空間を保持する入れ物。NSソートは名前空間の種別。 NSコンテナにNSソート指定=名前空間=束縛セット=置換=コンテキスト 色々な用語が使われているが同じこと。束縛セット(単に束縛と…
レイファイドデータ(reified data)といえども、単なるXJSONデータだから、これを加工するのは普通の処理となんら変わらない。が、難しい。ほんとの普通のデータは、そのまま(文字通りに)解釈すればいい。文字列は文字列だし、配列は配列だ。が、レイファ…
{* -*- coding: utf-8 -*- ここにメタスクリプトのコメント 主にコンテキストの意味とか使い方とか *} {* -------------------------------------------------- *} /** ここに生成されたスクリプトに関するdocコメント */ // マクロコード
A : インストール、起動、index.html、静的ファイルを置いてみる。コンソールコマンドを使う。 B : テンプレートファイル、インラインスクリプト/アウトオブラインスクリプト。簡単なアクション。 C : リソースとアクションを使いこなす。 D : コマンドを作…
データ処理としてはカンタンでも、メタプログラミングはやっぱり難しいな。「自分が何をしているか?」をずっと混乱しないで意識し続けるのが疲れる。
gvモジュールを使うとき使っているオプション。 --arrowhead --arrowtail --bgcolor --color --dir --fillcolor --fontcolor --fontname --headlabel --label --peripheries --rankdir --shape --style --width値付き。 --arrowhead=diamond --arrowhead=dot…
http://d.hatena.ne.jp/m-hiyama/20101213/1292201095 から再掲: /** * ランチの注文 */ type LunchOrder = { /** 会員識別情報 */ "ident" : { "name" : string, "memberNum" : integer }, /** 今日の注文 */ "order" : { "mainDish" : ( "special"| "fish…