Образцы и их применение  
  
Образцы (patterns) в системе Mathematica служат для задания выражений различных классов и придания переменным особых свойств, необходимых для создания специальных программных конструкций, таких как функции пользователя и процедуры. Это необычайно гибкое и мощное средство обобщенного представления математических выражений, используемое при любом подходе к программированию.
Признаком образца являются знаки подчеркивания «_» (от одного до трех). Они обычно выглядят слитно, так что надо внимательно следить за общей длиной символов образцов. Наиболее распространенное применение образцов — указание на локальный характер переменных при задании функций пользователя. Например, функция
fsc[x_,y_]:= х * Sin[y] + у * Cos[х] + z
в списке параметров содержит два образца, х_ и у_. В правой части этого выражения переменные х и у, связанные с образцами х_ и у_, становятся локальными переменными, тогда как переменная z будет глобальной переменной. Обратите особое внимание на то, что символы образцов используются только в списках параметров — в правой части выражений они уже не применяются.
Образцами можно задавать некоторые общие свойства функций. Например, запись
f[х_,х_] := р[х]
означает, что функция f двух идентичных аргументов становится тождественной функции р [ х ]. Следовательно, вызов функции
f[a,a] + f[а,b]
даст выход в виде
f[а,b] + р[а]
а при вызове
f[a^2- 1, a^2- 1]
будет получен результат
р[-1 + а^2]
Примеры применения образцов для задания функции вычисления факториала приводились выше. В образце можно указывать его тип данных:
Задание типов данных с помощью образцов делает программы более строгими и наглядными и позволяет избежать ошибок, связанных с несоответствием типов.
В системе Mathematica используются следующие типы образцов.
| Обозначение | Назначение образца | 
| - | Любое выражение | 
| x_ | Любое выражение, представленное именем х | 
| : : pattern | Образец, представленный именем х | 
| pattern ? test | Возвращает True, когда test применен к значению образца | 
| _h | Любое выражение с заголовком h | 
| x_h | Любое выражение с заголовком h, представленное именем х | 
| - | Любая последовательность с одним и более выражений | 
| - | Любая последовательность с нулем или более выражений | 
| :x_< ИЛИ х__ | Последовательности выражений, представленные именем х | 
| _h или h__ | Последовательности выражений, каждое с заголовком h | 
| x _ h или х__h | Последовательности выражений с заголовком h, представленные именем х | 
| x_ :v | Выражение с определенным значением v | 
| x_h:v | Выражение с заголовком h и определенным значением v | 
| x_. | Выражение с глобально заданным значением по умолчанию | 
| Optional [x h] | Выражение с заголовком h и с глобально заданным значением | 
| по умолчанию | |
| Pattern. . | Образец, повторяемый один или более раз | 
| Pattern. . . | Образец, повторяемый ноль или более раз | 
Еще раз отметим, что символ «_» в образцах может иметь одинарную, двойную или тройную длину. Надо следить за правильностью его применения, поскольку эти варианты различаются по смыслу. Образцы широко применяются при задании функций пользователя и в пакетах расширения системы.