手続きとしての関数

多くの計算問題で,同じ式を繰返しWolfram言語にタイプしなければならない状況が起るときがある.そのようなときは,入力のコマンドを含む関数を定義しておくことで何度も同じ式をタイプしなくても済むようになる.

3つの項を掛け合せ,結果を展開する.
In[1]:=
Click for copyable input
Out[1]=
同じ処理を4つの項に対して行う.
In[2]:=
Click for copyable input
Out[2]=
これは,n 項の乗積を計算し,展開する関数を定義する.
In[3]:=
Click for copyable input
関数が使われるたびに,乗積Productと展開Expandの両操作が実行される.
In[4]:=
Click for copyable input
Out[4]=

ユーザ定義の関数は,本質的にはコマンドを実行するための「手続き(プロシージャ)」である.手続きには複数の計算ステップを記述することができる.区切りのため,ステップとステップの間にはセミコロンを入れる.

関数全体の戻り値は,手続きの最後の式に対する結果である.関数をこのように定義するときは,丸カッコで手続きの部分をくくることに注意.
In[5]:=
Click for copyable input
手続きを実行する.
In[6]:=
Click for copyable input
Out[6]=
expr1;expr2; 評価する一連の式
Module[{a,b,},proc]局所変数 , b, をともなう手続き

手続きの構築

Wolfram言語で手続きを記述するとき,手続き内で使う変数は局所的なものとして宣言しておくとよい.そうしておけば,変数が手続きの外で起ることと干渉することがなくなる.変数の局所化は,手続きをモジュールとして宣言することで行うことができる.

前の例で使った関数はモジュールとして定義されていない.したがって,の値は「逃げて」しまい,関数が返った後も残ってしまう.
In[7]:=
Click for copyable input
Out[7]=
次に同じ計算をモジュールを使い定義してみる.局所変数をモジュール内で定義しておく.
In[8]:=
Click for copyable input
返される結果は以前の関数と同じである.
In[9]:=
Click for copyable input
Out[9]=
ただし,今度は,の値が「逃げない」ので,参照しても何も返されない.
In[10]:=
Click for copyable input
Out[10]=