Go to the first, previous, next, last section, table of contents.


書替え 練習問題 3 解答「opt(a) + opt(b) x の書替え」

彼は無限ループにハマりました。 最初に、 Calc は予想どおり `2 + 3 x'`f(2, 3, x)' に書替えました。 次に Calc はもう一度規則適用の可能性を探して、 `f(2, 3, x)'`a = 0', `b = 1', `x = f(2, 3, x)' にマッチできることを 発見したので `f(0, 1, f(2, 3, x))' に書替えました。 そしてさらに `f(0, 1, ...)' がかぶさりました。 際限無くこれを繰り返したのです。 Joe は M-1 a r を使って規則の適用を 1回に限定すべきでした。

(実は、最初のステップすら彼が予想したようには働きません。 M-1 a r に対して Calc が返すのは `f(3 x, 1, 2)' で、 2 を「変数」として、 `3 x' を加算される定数として扱っています。 これは奇妙に思えるかもしれませんが、 「明白な」解と同じくらい正当な解には違いありません。 これを直す方法の一つは条件 `:: variable(x)' を規則に付加して、 `x' にマッチするものが確かに変数であるようにすることです。 あるいは左辺の `x'`quote(x)' に代えて、 メタ変数 `x' が他でもない実際の変数 `x' にマッチするように することです。)


Go to the first, previous, next, last section, table of contents.     利用度数