информационно-новостной портал
Главная / Статьи / Информатика / Программирование /

Функции высших порядков и -выражения.

Рассмотри функцию увел1, увеличивающую значения всех элем-тов числового списка на 1, и функцию ост2, вычисляющую остаток от деления на 2 для всех элементов списка.   увел1=если null(x) то ‘() иначе cons(car(x)+1,увел1(cdr(x))); ост2(x)=если null(x) то ‘() иначе cons(car(x) mod 2, ост2(cdr(x)));    Эти определения очень схожи. Можно определить функцию высшего порядка, которая применяет некоторую функцию ко всем элементам списка.  Отобр(x,f)=если null(x) то ‘() иначе cons(f(car(x)), отобр(cdr(x),f));         

Функция увел 1 и ост2 можно определить, используя функцию отобр:  ув1(z)=z+1;    увел1(x)=отобр(x,ув1);    ос2(z)=z mod 2;  ост2(x)=отобр(x,oc2) и т.д.

  При написании функции можно избавится от вспомогательных фун-кций, если воспользоваться другим способом определения функции. До сих пор мы вводили функцию с помощью определений вида f(x1,…,xn)=e. Имя f является глобальным, то есть может исполь-ся для определения других функций, а имена параметров x1… являются локальными, то есть могут использоваться только в выражении е. Функция является правилом для вычисления значения по некоторым аргументам. Определение, приведенное выше, связывает с именем f некоторое значение, заключающее в сеье это правило. Это значение является l-выражением l(x1,x2,..,xn)=e. l-выражение выделяет имена параметров x1,x2… и выражение для вычисления значения, использ. эти параметры.

  l-выражение обозначает одно и тоже функциональное значение, независимо от имен, выбранных для параметров. Выражения l(z) z+1 и l(x) x+1 обозначают одно и то же и являются взаимозамен-ыми.  l-выражения можно использовать в блоках локальных определений "пусть” и "где”, определяя локальные функции.   Рассмотрим функцию ув(n)=l(z)z+n, которая возвращает функцию.

  Функция высшего порядка комп(f,g)=l(x)f(g(x)) имеет функции и в качестве аргументов, и в качестве результата. Эта функция позволяет определить функцию через композицию других функций.

Просмотров: 825 | Дата добавления: 08.02.2016