* Данный текст распознан в автоматическом режиме, поэтому может содержать ошибки
Язык программирования систем Mathematica
Для нашего примера такая функция выглядит так:
#1^#2&[2,3] 8 #1^#2&[y,z] yz
1073
С помощью анонимных функций нетрудно создать обычные функции пользо вателя:
f[x_,y_]=#1^#2&[x,y] xy f[2,3] 8
14.3.5. Специальные средства работы с функциями
При функциональном программировании часто используется суперпозиция фун кций. Для ее реализации используются функции: • Nest[expr,x,n] – применяет выражение (функцию) к заданному аргументу x n раз; • NestList[f,x,n] – возвращает список приложений функции f к заданному аргументу x n+1 раз; • Fold[f,x,list] – дает следующий элемент в FoldList[f,x,list]; • FoldList[f,x,{a,b,...}] – дает {x, f[x, a], f[f[x, a], b], … }; • ComposeList[{f1,f2,...},x] – генерирует список в форме {x, a[x], a[a[x]], ...}. Примеры, иллюстрирующие действие этих функций, представлены ниже:
Clear[f] Nest[f,x,5] f[f[f[f[f[x]]]]] Nest[Exp[x],x,5] NestList[f,x,3] {x, 1 + 2x + x2, 4 + 8x + 8x2 + 4x3 + x4, 25 + 80x + 144x2 + 168x3 + 138x4 + 80x5 + 32x6 + 8x7 + x8} Fold[f,x,{1,2,3}] x6 FoldList[f,x,{1,2,3}] {x, x, x2, x6} ComposeList[{Exp,Ln,Sin},x]
В функциональном программировании вместо циклов, описанных далее, мо жет использоваться следующая функция: • FixedPoint[f,expr] – вычисляет expr и прикладывает к нему f, пока резуль тат не повторяется; • FixedPoint[f,expr,SameTest >comp] – вычисляет expr и прикладывает к нему f, пока два последующих результата не дадут True в тесте.