このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

Caty

プログラムの行列計算 その0.5

とりあえず二部グラフに対応する行列の場合に定式化する。 二部グラフより複雑な有向グラフの場合も考える。 二部グラフより複雑な場合も行列計算に帰着する。 ポートとポートバインディングを考える。 行列より一般的なテンソル計算を考える。 インデックス…

プログラムの行列計算 その0

とりあえず、クライアント/サーバーのときの事実をメモしておく。Cはクライアント側エンドポイント(状態、境界オブジェクト)の集合、Sはサーバー側エンドポイント(アクション、コントロールオブジェクト)の集合とする。CとSは排他的になっている。CとS…

リクエストディスパッチの構造

イカンイカン、イカンイカンイカン!!形式化/抽象化をしないと、いつまでたってもハッキリしないグダグダ状態が続く。リクエストディスパッチの基本は、いちおう「集合と論理の練習問題: ツリー状の集合族 - 檜山正幸のキマイラ飼育記 」に書いた。僕はオ…

CatyScriptとデカルト半環圏

デカルト半環圏 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は関手にはならない

言語仕様はtry/catchとしたが、やはり単独のtryを考えたほうが扱いやすい。が、注意すべきはtryが関手にはなってない点だ。関手ではないが圏論的オペレーター。他の例: eachは、each(f;g) = each(f);each(g) の意味で関手性を持つ。クライスリ埋め込み関手…

bitbucket Services

説明は: 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を一緒にした…

トリガーが難しいワケ、力学とのアナロジー

ずっと以前から、ハイパーメディアに関して「トリガー」という言葉と概念を使っている。「ハイパーリンク」とか「アンカー」と言わずに、あえて「トリガー」と呼んでいたのにはワケがあるのだが、どうもそのへんがうまく説明できないでいた。ハイパーメディ…

CatyScrpiptが読みやすいと感じるとはコレ如何に

エソラングっぽいと思っていたCatyScriptだが、“慣れ”とは恐ろしいもので読みやすく感じる。余りにもバイアスがあるから、客観的にreadableなモノなのかどうか? の判断は付かない。まだ実装してない begin/repeat を使った例(自己forward版は実際に動かし…

helpアプリケーションの作り方

Catyの内部構造を知っている人間はごく少数(約二名)だから、それについてここで書いてもしょうがない気もするが、いずれ知っている人が増えることを期待して …。まず、mafsは、ストレージ・バックエンドがなんであっても同じインターフェイスを提供するこ…

総称コマンドと関手とモナドとか、あとアイレンベルグ/ムーア構成とか、色々

記法としては、通常の集合論/圏論の記法よりは、CatyScriptの構文に近い書き方をする。が、最初は一般的かつ抽象的な状況設定、すぐ後で具体的なスクリプトで書く。Cは、なんか具体的な対称モノイド圏だとする。Cは集合圏の部分圏と仮定してもいい(別にな…

さらに行列計算

トータルマトリックスは、リソースインスタンス(リソースID)セット(横軸)とアクションセット(縦軸)の上にエントリーポイントを配置したものだが、成分の値であるエントリーポイントを全部集めた集合をサービス空間と呼ぶことにする。通常、状態(state…

ハイパートランジション? トータルマトリックス、行列計算

クライアント側の状態遷移も「リンク」と呼ぶと誤解が生じる。まー、そりゃそうだ。普通、状態遷移はリンクとは言わないからね。ハイパーリンクのトラバース(たどり)によって、その結果としてトランジションが生じるのだから、ハイパートランジション。と…

まだある概念と用語:主にハイパーリンク関係

モグラ:アンビエントが持つメタオブジェクトの集合を構造化した有向グラフ。大分類して三種類のノード(名前空間コンテナ、名前空間、その他)を持つ。エイリアス辺によりツリーではないグラフとなる。エイリアス辺を除くとツリー、これはスパニングツリー…

またしても概念と用語:主にハイパーリンク関係

「Webに関する概念と用語」にいくつか書いたけど、もっとある。色々ある。ハイパーリンクは難しい(http://d.hatena.ne.jp/m-hiyama/20100901/1283312114)と嘆いたことがあるけど、今まで、ほとんどマトモな定式化はなかったんじゃなかろうか。定式化に際し…

最近のCatyScriptコード

可読性に難ありだったCatyScriptもけっこう改善された。普通に読める。最近書いたスクリプト。二百数十行、30行限界説を唱えていた頃に比べると…… // -*- coding: utf-8 -*- /** * * リソースマトリックス (Resource Matrices) の操作 * */ module resmat; /…

Webに関する概念と用語

いろいろと増えて、重複や曖昧さがある。○がついてるのは普通の言葉。△は普通の意味を変えている。 リソースクラス リソースインスタンス リソースインスタンス・ストレージ クエリーパラメータ ○ セグメントパラメータ リクエストボディ ○ アクション アク…

モグラ(MOGra)の基本

Catyのレイフィケーションを整備してメタプログラミング環境を作る。そもそも何をレイフィケーションするのか? -- メタレベルにある構造をキチンと定義する必要がある。最近、「メタレベルにある構造」をモグラ(MOGra)という名前で呼ぶことにした。Metaob…

名前の参照関係のグラフ構造:これは物凄く大事

こういう絵になる。NSは名前空間の略称。NSコンテナはいくつかの名前空間を保持する入れ物。NSソートは名前空間の種別。 NSコンテナにNSソート指定=名前空間=束縛セット=置換=コンテキスト 色々な用語が使われているが同じこと。束縛セット(単に束縛と…

メタプログラミング:用語とネーミング

レイファイドデータ(reified data)といえども、単なるXJSONデータだから、これを加工するのは普通の処理となんら変わらない。が、難しい。ほんとの普通のデータは、そのまま(文字通りに)解釈すればいい。文字列は文字列だし、配列は配列だ。が、レイファ…

メタプログラミング:メタスクリプトの雛形

{* -*- coding: utf-8 -*- ここにメタスクリプトのコメント 主にコンテキストの意味とか使い方とか *} {* -------------------------------------------------- *} /** ここに生成されたスクリプトに関するdocコメント */ // マクロコード

マスターまでの5段階

A : インストール、起動、index.html、静的ファイルを置いてみる。コンソールコマンドを使う。 B : テンプレートファイル、インラインスクリプト/アウトオブラインスクリプト。簡単なアクション。 C : リソースとアクションを使いこなす。 D : コマンドを作…

メタプログラミング in CatyScript

データ処理としてはカンタンでも、メタプログラミングはやっぱり難しいな。「自分が何をしているか?」をずっと混乱しないで意識し続けるのが疲れる。

Graphvizの属性

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…