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

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

簡単なループをトレースで書く

とても簡単なプログラム:


if (x == 0) {
z = x;
} else {
z = 1;
}

同じこと、ただし無駄にループを回す。


if (x == 0) {
z = x;
} else {
while ( x > 1) x--;
z = x;
}

ループを外す。並列プログラム。


cobegin {
if (x == 0) {
z = x;
} else {
w = x;
}
} and {
if (y > 1 ) {
w = --y;
} else {
z = y;
}
} // coend

これを (x, y)→(z, w) というプロファイルの射(並列計算の圏の射)だと思って、yとwを同一視してトレースを取るとループが再現する。