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

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

スパイダーグラフ:チャンネルと描画

ハブエントリー:

チャンネル(ワイヤーのロール)と図示法。「描画するか」の△は、「設定によっては描画する」こと。

チャンネル in/out 描画するか 色(暫定) 矢印(暫定) 備考
param in - inv
env in × - -
stdin in - normal
varin in - diamond 変数参照ノードのみ
stdout out black -
except out × - -
signal out hotpink -
forward out green -
varout out darkblue - 変数生成ポイントのみ
redirect out blue - Webのみ


redirectチャンネルは、Webでのみ使われる“signalチャンネルの特別なもの”だが、Webでは重要なので通常のシグナルとは別に扱う。RedirectResponseを、「リダイレクトをクライアントに伝えるレスポンスの型」だとして、シグナルの宣言は signals RedirectResponse のようになる。だが、この一般的宣言に代えて、リダイレクト先まで明示した redirects Res.act の形の宣言を使う。redirects宣言はアクションでのみ有効で、一般コマンドでは使えない。

redirectチャンネル(アクション専用)とforwardチャンネル(一般的)は、制御の行き先が最初から明示されているという点で、他の出力チャンネルとは異なる。他のチャンネルの行き先は、局所的な宣言では判断できず、スクリプト全体のフロー文脈のなかで決定される。

現状、envとexceptは描かないが、try-catch風構文とその双対が導入されれば、env/exceptもある程度は描く必要がある。

ワイヤーに色や形状を付けることによってチャンネルを識別する。が、色や形状を取り去ってもグラフのトポロジーは変わらない。データと制御のフローに関して本質的なのはグラフのトポロジーであって色・形状はオマケ。オマケに拘ってはいけない、トポロジーとその変形(最適化やリファクタリング)に注目すべき。