2012-05-21 12 views
13

Iは、次の関数そしてパラメータを定義するときにMathematicaがアンダースコアを使用するのはなぜですか?例えば

exprod[n_] := Expand[Product[x + i, {i, 1, n}]] 

を定義した場合理由である関数の定義に必要な変数nの後に下線、?このスタイルはMathematicaプログラミング言語のどこに由来するのか、それともMathematicaプログラミング言語のみに固有のものなのか?

+0

を与えると言っている?と言いますか私は完全にはわからない。 – ripit

+0

[Mathematica用のStackExchangeサイト](http://mathematica.stackexchange.com/)があります。将来の質問をすることを検討してください。 – Verbeia

答えて

16

アンダースコアはパターンマッチングに由来します。

x_は何にもマッチしますが、これは関数の本体でxという名前にバインドされています。次に、L [2 * z]は最初の式2 * zは パターンX_ * Y_照合さ

l[x_ * y_] := l[x] + l[y]; 

。次に、xは2に結合され、yはzに結合される。 そして、式l [x] + l [y]が評価され、結果は l [2] + l [z]になります。

ここで、lの値を1に定義したいとします。 l [e]:= 1またはl [e_]:= 1と書いていますか?

一つは、変数e(文字通り)にlは1 でなければならないことを他の何かにlが、私は、これはコミュニティのwikiになると思います。1.

http://reference.wolfram.com/mathematica/tutorial/Introduction-Patterns.html

+2

ありがとうございました。それは面白い読み物であり、私が探していたものでした。 – ripit

関連する問題