Почему Mathematica использует подчеркивание при определении параметров?

например, если бы я определял следующую функцию

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

тогда почему подчеркивание после переменной n, необходимо в определении функции? Откуда берется этот стиль или он специфичен только для языка программирования Mathematica?

1 ответов


подчеркивание происходит от сопоставления шаблонов.

x_ соответствует чему-либо, и это что-либо связано с именем x в теле функции.

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

затем в l[2*z] сначала выражение 2*z сопоставляется с шаблон x_ не * не . Тогда x привязано к 2, а y - к z. Затем вычисляется выражение l[x] + l[y], и результат становится l[2]+l[z].

теперь скажем, что мы хотим определить значение l на e равным 1. Пишем ли мы l[e]: = 1 или l[e_]: = 1 ?

говорят, что L (буквально) переменная e должна быть 1. Другой говорит, что l чему-то дает 1.

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