Why does Mathematica use an underscore when defining parameters?
Asked Answered
K

1

24

For example if I was defining the following function

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

Then why is the underscore after the variable n, necessary in the function definition? Where does this style come from or is it specific only to the Mathematica programming language?

K2 answered 21/5, 2012 at 16:33 Comment(2)
I guess this would be community wiki? I'm not entirely sure.K2
There is now a StackExchange site just for Mathematica. Please consider asking future questions there.Extenuate
U
27

The underscore comes from pattern matching.

The x_ matches anything and this anything is bound to the name x in the body of the function.

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

Then in l[2*z] first the expression 2*z is matched against the pattern x_ * y_ . Then x is bound to 2 and y is bound to z. Then the expression l[x] + l[y] is evaluated, and the result becomes l[2]+l[z].

Now say we want to define the value of l on e to be 1. Do we write l[e] := 1 or l[e_] := 1?

One says that l to (literally) the variable e must be 1. The other says that l to something gives 1.

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

Ultra answered 21/5, 2012 at 16:44 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.