WOLFRAM言語チュートリアル

変換規則の一括操作

他のシンボル式と同じように変換規則のリストにも各種の操作処理を施すことができる.規則からなるリストにはよく参照名が割り当てられる.

三角関数展開規則に「名前」を割り当てる.
In[1]:=
Click for copyable input
Out[1]=
これで,「名指し」で規則を使えるようになる.
In[2]:=
Click for copyable input
Out[2]=

リスト形式で規則を与えることで数学的関係やその他の関係を表すことができる.その際は,リストに名前を付けておき,実際に使うときには,ほしいリストを名前で簡単に指定できるようにしておくとよい.

ほとんどの場合は,リスト中の1つの規則だけが実際の式に適用される.ただし,演算子は,リストにある全規則を1つずつ判定していくので,リストの規則が多ければ多いほど処理に時間がかかる.

効率よくが進むように,規則のリストに前処理を施すことができるようになっている.これを行うには,関数Dispatchを規則のリスト全体に作用させる.結果として,「呼出し表」を含んだ規則のリストを表したオブジェクトを得ることができる.この表は,による適用可能な規則を即座に「呼び出す」ための情報を備え,これを参照することで,全規則を代る代るに判定する必要がなくなる.

最初の5階乗を生成するための規則を作る.
In[3]:=
Click for copyable input
Out[3]=
呼出し表を設けておき,規則を早く使えるようにする.
In[4]:=
Click for copyable input
Out[4]=
演算子で規則を適用する.
In[5]:=
Click for copyable input
Out[5]=
Dispatch[rules]呼出し表を含む規則を表すオブジェクトを生成する
expr/.drules呼出し表を含む規則を式に適用する

呼出し表の作成と適用

たくさんの規則を持つ長いリストでは,呼出し表を設けることで,置換操作をより早く済ませられる.パターンオブジェクトを含まない単体のシンボルやその他の式に関した規則を与える場合には,この方法を使うと特に効果的である.呼出し表を作っておくことで,演算子による処理は,与えられた規則がいくつあってもほとんど同じ時間しかかからなくなる.逆に,呼出し表を使わない場合は,では規則の総数に正比例しただけの時間がかかってしまう.