MATHEMATICAチュートリアル

定義の適用順

定義の列を Mathematica で作ると,それらの定義は他の定義より,より一般的な定義であることがある.Mathematica は,一般定義は特殊な定義よりも後回しにされる,という原則に従っている.このため,規則の特殊ケースは,より一般的なケースより先に試される.

この動作は,「関数の定義」の例で示した階乗関数で決定的な役割を果たす.つまり,規則の入力された順序に関係なしに,Mathematica は,の特殊ケースの規則を用の一般則の前に置く.このため,Mathematicaf[n]形のある式の値を探すときは,の特殊ケースを最初に試し,それが適用しない場合に限って,一般ケースであるを試す.その結果,の値が要求されると,Mathematica は,に対応した「最終条件」が適用できるようになるまで,一般則を繰り返し使う.

Mathematica は,特殊な定義を一般的な定義より先に置く.

定義の優先順位

もしも特殊則を一般則の前に使うという原則が守られなかったら,特殊則はより一般的な規則で常に「隠され」てしまう.上記の階乗の例で,もし用の規則がの規則より優先されたなら,Mathematicaを評価しようとするときも,の一般則が適用されてしまい,の特殊則がいつまでたっても使われないという状況に陥ってしまう.

に対する一般的な定義を行う.
In[1]:=
Click for copyable input
特殊ケースに関する定義を行う.
In[2]:=
Click for copyable input
Out[2]=
Mathematica は,特殊ケースを一般ケースの前に置く.

上記の階乗関数の例では,どちらの規則がより一般的なものかがはっきりしている.しかし,与えられる規則にはっきりした適用順序を見出すことができないことがよくある.そのようなときは,Mathematica は,単純に入力された順序通りに規則を適用していく.

これらの規則には,一般性の高低による決まった適用順序がない.
In[4]:=
Click for copyable input
確認すると,規則は入力した通りに保存されている.
この規則は,に対する規則の特殊ケースである.
In[6]:=
Click for copyable input
特殊則は,先に定義された一般則の前に置かれている.

Mathematica は,多くの実践的なケースでは,いつある規則が他の規則より,より一般的であるかを認識することができるが,どんな場合でもそうかというとそうではない.例えば,2つの規則がともにによる複雑な条件を含むとき,どちらがより一般的かは判断することが極めて困難である.決まった順序はないかもしれない.順序を判断できないとき,Mathematica は与えられた通りの順序で規則を保管する.

New to Mathematica? Find your learning path »
Have a question? Ask support »