Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ФЛ ответы.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
27.25 Кб
Скачать

15. Понятие функций высших порядков; функционалы и функции с функциональным значением.

Функция высшего порядка – это функция, которая в качестве аргумента может использовать любую функцию либо результатом ее выполнения является некая функция.

Аргумент, значением которого является функция, называется функциональным аргументом. Функция высшего порядка с функциональным аргументом называется функционалом.

Функция с функциональным значением: (funcall (uvel 3) 14) 17

16. Встроенные применяющие функционалы apply и funcall и их использование в определении интерпритаторов и функционалов пользователя.

APPLY – применяет функцию к списку аргументов.

(apply fn список)

Fn – функциональный аргумент

При вызове фактическим значением fn может быть имя встроенной функции или определенной пользователем функции, лямбда выражение, а также любая вычисляемая форма значением которой является функциональный объект.

(apply (car'(+ * / -)) '(2 3))

5

FUNCALL аналогичен APPLY, но аргументы для вызываемой функции принимает не списком, а по отдельности.

(funcall fn x1x2x3…xn)

(funcall ‘+ 2 3)

5

(funcall ‘cons 2 3)

(2 . 3)

17. Отображающие функционалы. Два вида map-функций. Mapcar и maplist.

Отображающие функционалы, являются функциями, которые некоторым образом отображают список-аргумент в новый список.

В общем случае вызов MAP-функции имеет вид: (MAPx fn x1x2…xn)

Количество списков в вызове функции должно совпадать с предусмотренным количеством аргументов функции fn.

MAPCAR – повторяет вычисление функции fn на элементах списков. Значение функции вычисляется путем последовательного применения функции fn к элементам списков x1,x2,x3,…xn. Например в случае одно списка вызов функции имеет вид: (MAPCAR f x)

В качестве значения функционала возвращается список, построенный из результатов применения функционального аргумента fn к элементам исходного списка.

MAPLIST – эта функция повторяет вычисление заданной функции на хвостовых частях списка. MAPLIST действует подобно MAPCAR , но действия осуществляет не над элементами списка, а над последовательностями “cdr” этого списка, начиная с исходного.

18. Определение типа структура. Создание объектов структурного типа. Функции доступа к полям объекта типа структура.

Определение структурного типа: (defstruct имя_структуры поле1…полеn)

Объекты определенного типа создаются формой (make-имя_структуры)

Для каждого поля существует функция доступа, имя которой образуется из имени типа и имени поля, разделенных дефисом: (студент-факультет х)

Можно присвоит другое значение конкретному полю функцией setf.

19. Макропрограммирование в лиспе. Определение макроса. Последовательность выполнения макровызова. Обратная блокировка и определение новых синтаксических форм.

Макросы – это специальные программные средства которые дают возможность расширить синтаксис и семантику языка. С их помощью можно создавать новые вычислительные формы и писать компактные программы.

Определение: (defmacro имя λ-список тело)

Вызов: (имя аргументы) – макровызов

Вычисление макроса отличается от вычисления функции. Отличия:

1. Макрос при вызове не вычисляет свои аргументы.

2. Тело макроса вычисляется дважды. Сначала вычисляется тело с аргументами. Затем полученная форма автоматически вычисляется еще раз.

Обратная блокировка:

Используется для более удобного способа создания макроса.

Внутри обратно блокированного выражения можно локально отменять блокировку.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]