next up previous
Next: 近似計算(float) Up: 計算 Previous: proc の省略したかきかた(``→'')

代入・置換(subs)

代入・置換は subs を使って行います。 たとえば、

p:=x^2+y^2+z^2;
                                2    2    2
                               x  + y  + z


 subs(p,x=3);   // p の x を 3 に置き換える (つまり x=3 を pに代入)

                                 2    2
                                y  + z  + 9

という具合です。

subs は上のような単なる文字式だけではなく、いろいろな対象に対して使えます。 たとえば、(何が起こっているかということの説明という以外には意味のない例ですが、)

f:=proc(x)
      local y;
       begin
       y:=x
      end_proc:
として、
 subs(f,x=b);

                                proc(b)
                                  name f;
                                  local y;
                                begin
                                  y:=b
                                end_proc
とか、
 subs(f,y=b);

                                proc(x)
                                  name f;
                                  local b;
                                begin
                                  b:=x
                                end_proc
みたいなことができます。まさに「単純な置き換え」ですね。 proc の引数を定数に置換しようとすると、次のようになります。

g:=subs(f,x=3);

                                proc()
                                  name f;
                                  local y;
                                begin
                                  y:=3
                                end_proc

つまり $ g$ は「引数をとらない関数」になるわけです。結構賢いですね。



2008-11-15