スパイダーグラフ:チャンネルと描画
ハブエントリー:
チャンネル(ワイヤーのロール)と図示法。「描画するか」の△は、「設定によっては描画する」こと。
チャンネル | 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もある程度は描く必要がある。
ワイヤーに色や形状を付けることによってチャンネルを識別する。が、色や形状を取り去ってもグラフのトポロジーは変わらない。データと制御のフローに関して本質的なのはグラフのトポロジーであって色・形状はオマケ。オマケに拘ってはいけない、トポロジーとその変形(最適化やリファクタリング)に注目すべき。