Более гибкий способ задания полноценных функций пользователя базируется на применении функционального оператора. При этом используется следующая конструкция:
name:=(x,y,...)->expr
После этого вызов функции осуществляется
в виде name(x.y,...), где (х.у,...) — список формальных
параметров функции пользователя с именем name. Переменные,
указанные в списке формальных параметров, являются локальными. При подстановке
на их место фактических параметров они сохраняют их значения только в теле функции
(ехрr). За пределами этой функции переменные с этими .
именами оказываются либо неопределенными, либо сохраняют ранее присвоенные им
значения. Следующие примеры иллюстрируют сказанное:
Нетрудно заметить, что при вычислении функции m(х.у) переменные х и у имели значения 3 и 4, однако за пределами функции они сохраняют нулевые значения, заданные им перед введением определения функции пользователя. Еще один способ задания функции пользователя базируется на применении функции unapply: name:=unapply(expr.varl.var2,...) Ниже даны примеры такого задания функции пользователя:
Последний пример показывает возможность проведения символьных операций с функцией пользователя.