Укороченная форма функций. Выделения и подстановки в функциях.
Из описания указанных функций вытекает, что они наряду с полной формой могут задаваться укороченной формой.
Укороченная форма | Полная форма |
---|---|
f @ ехрг | f [expr] |
f @@ ехрг | Apply [f, expr] |
f /@ ехрг | Map[f, expr] |
f //@ ехрг | MapAll [f, expr] |
Смысл укороченных выражений очевиден. Приведем несколько примеров их использования.
Ввод (In) | Вывод (Out) |
---|---|
f@{a, b, с} | f[{a, b, c}] |
f@@{a, b, c} | f [a, b, c] |
f /@{a, b, c} | {f[a], f[b], f[c]} |
f//@{a, b, x} | f[{f[a], f[b], f[x]}] |
Укороченная форма функций может оказаться полезной для сокращения записи алгоритмов и программ.
Выделения и подстановки в функциях
Функция Slot[n], или, в укороченной форме, #n, представляет n-й аргумент функции. Это иллюстрируют следующие примеры.
Ввод (In) | Вывод (Out) |
---|---|
(5* Slot [1] + Slot [2] *Slot[3]A 2) &[a, b, с] | 5a+bc2 |
#1A #2 S[a, b] | ab |
Объект # эквивалентен #1, a #0 – заголовку абстрактной функции. Таким образом, F[#.#2]&F[a,b] эквивалентно F[a,b].
Функция SlotSequence [n], или, в укороченной форме, ##n, где п = 1, 2,…, представляет порядок применения формальных аргументов к абстрактной функции. Таким образом, объект ##n определяет последовательность аргументов, начиная с n-го.
Ввод (In) | Вывод (Out) |
---|---|
(Times[5, ##2] +Times[##2, ##3A 2]) &[а, b, с] | Sbobc3 |
Представленные средства обеспечивают работу с функциями на абстрактном уровне.
Интересные возможности связаны с использованием подстановок при определении функций. Система допускает использование подстановок в виде f [x] = value и f[x_] = value.
Поясним это несколькими примерами.
Ввод (In) | Вывод (Out) |
---|---|
f[x] =u | u |
f[x] +f[y] | u+f ty] |
f [x_] = х^2 | x2 |
f[x] +f[y] | u+y2 |
Clear [f] | |
f[x]+f[y] | f [x] + f [y] |
Как нетрудно заметить из этих примеров, подстановки в функциях могут существенно изменить исходную функциональную зависимость. А потому важной областью их применения является модификация функций.