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

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

スパイダーグラフ:絵は大ざっぱに描くべし

ハブエントリー:

絵がテキストより分かりやすいのは、ノード/ワイヤー数が少ない場合で、ノード/ワイヤーが増えると結局はナンダカワカラナイ。

ノード/ワイヤー数を減らすには、絵で表現する情報を絞り込んで余分なことは描かない。細かい分類をしないで、類似のものは同じ形状で描いてしまう。大ざっぱに描くことは抽象度が上がることでもあるので、同じ絵にいろいろな解釈ができる。例えば:

黒丸のポイントジャンクションがAND分岐とAND合流、スポットのほうがOR分岐とOR合流。

ANDのほうを考えてみると、分岐はデータとしてはコピー(copy, dup, clone)、制御としてはcobegin、フォークポイントとなる。合流はデータとしてはタプルコンストラクタ、制御としてはcoend, ジョインポイントとなる。タプルコンストラクタは、XJSONの配列コンストラクタ、オブジェクトコンストラクタ、タギングコンストラクタのどれも同じ絵で表すことが出来る。ワイヤーに型以外のラベル(タグラベル)を目印に付けるとして:

  1. 配列:番号タグでラベル
  2. オブジェクト:名前タグでラベル
  3. タギング:$$tag, $$val という特殊タグでラベル

ジャンクションは証明図の推論とも解釈できて、分岐と合流が次に対応する。

A
------[増]
A A


A B
---------[∧導入]
A∧B

大ざっぱな絵では、同一の絵を、データ操作、プログラム制御、論理計算の観点から解釈できる。要するに、カリー/ハワード対応が目視で確認できるようになるわけ。