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


書替え規則の基礎

あるターゲット式 x に、 ある書替え規則 `old := new' をマッチさせる際に、 Calc は x の構造と old の構造を比較します。 old の中に現れる変数群はメタ変数として扱われ、 x 内で対応する位置にサブ数式を含んでいてもマッチします。 例えば、パターン `f(x,y)'`f(12, a+1)' にマッチします。 このときメタ変数 `x' は 12 に、`y'`a+1' に対応しています。 いっぽうこのパターンは、(次の式にマッチするメタ変数の割付けが無いので、) `f(12)'`g(12, a+1)' などにはマッチしません。 もしパターンを単独のメタ変数にすると、 あらゆる式にマッチしてしまうことに注意してください。

与えられたメタ変数が old 内に複数回出現する場合、 ターゲット x 内で対応するサブ数式は同一でなければなりません。 従ってパターン `f(x,x)' は、 `f(12, 12)'`f(a+1, a+1)' にマッチしますが `f(12, a+1)'`f(a+b, b+a)' にはマッチしません。 (最後の例をマッチさせる方法は、条件つきの書替え規則 参照 。)

変数以外の成分は、パターンとターゲット間で完全にマッチしなければなりません。 減密に特定の変数にマッチさせるには、 パターン内で疑似関数 `quote(v)' を使います。 例えばパターン `x+quote(y)' は、`x+y', `2+y', `sin(a)+y' などにマッチします。

特別な変数名である `e', `pi', `i', `phi', `gamma', `inf', `uinf', `nan' は、 常に文字通りにマッチします。 従ってパターン `sin(d + e + f)' は、 `sin(d + quote(e) + f)' と全く同様に作用します。

old が与えられた式にマッチすることが判ったら、 その式は new に置換されます。 その際、new 内のメタ変数もそれぞれ対応するサブ数式で置換えられます。 従って、規則 `f(x,y) := g(y+x,x)'`f(12, a+1)' に適用すると、 `g(a+13, 12)' が生成します。

通常の a r コマンドは、 それ以上の変更ができなくなるまで、何回も繰返して書替え規則を適用します (上限は100回までです)。 1回だけ適用するには、C-u 1 a r としてください。


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