"Функции более высокого порядка. Функциональный аргумент, функциональное значение. Способы композиции функций" - композиции и функции высокого порядка - Lisp
Формулировка задачи:
Идут 2 вопроса подряд:
"Локальные определения (форма LET).
Функции более высокого порядка. Функциональный аргумент, функциональное значение. Способы композиции функций."
Что имеется в виду под "функциями более высокого порядка" и "способами композиции функций" ? Предполагаю, что последнее - это "композиции функционалов", но я не понимаю, что имеется в виду под этим выражением.
Может полный список вопросов поможет прояснить что-нибудь насчет "высоких порядков".
1. Базовые функции обработки списков.
2. Определение и вызов функций с помощью λ-выражений. λ-список, λ-преобразование. Свободные и связанные переменные. Функция DEFUN
3. Локальные определения (форма LET).
4. Функции более высокого порядка. Функциональный аргумент, функциональное значение. Способы композиции функций.
5. Автоматическое управление памятью в Лиспе. «Сборка мусора».
6. Создайте Лисп-список, представляющий собой список планет Солнечной системы.
7. Почему значения в Лиспе представлены указателями?
8. Определите функцию add5(n), которая увеличивает числовой параметр n на 5.
9. Определите функцию add5(n), которая увеличивает числовой параметр n на 5, используя синтаксис λ-определения.
10. Суперпозиция (или «композиция») функций как средство формирования более сложных функций.
11. Какую (двоякую) роль играет в Лиспе функция eval?
12. Возвращение функцией нескольких величин.
13. Базовые функции Лиспа.
14. Опишите три варианта предиката равенства в Лиспе.
Решение задачи: «"Функции более высокого порядка. Функциональный аргумент, функциональное значение. Способы композиции функций" - композиции и функции высокого порядка»
textual
Листинг программы
(defun f1 (x) (+ x c)) ==> f1 (f1 4) Assoc: Символ c не имеет значения (не связан). ==> ERRSTATE (let ((c 5)) (defun f2 (x) (+ x c))) ==> f2 (f2 4) ==> 9 ;; 4+5=9 (setq c 7) ;; определим ГЛОБАЛЬНУЮ переменную ==> 7 Создана глобальная переменная c (f2 4) ==> 9 ;; по-прежнему видит локальную переменную из замыкания (f1 4) ==> 11 ;; видит глобальную
Объяснение кода листинга программы
- Написана функция f1, которая принимает один аргумент x и возвращает результат (+ x c).
- Вызвана функция f1 с аргументом 4.
- В результате выполнения функции f1 происходит ошибка, так как переменная c не имеет значения.
- Введен блок let, который создает локальную переменную c со значением 5.
- Внутри блока определена функция f2, которая также принимает один аргумент x и возвращает результат (+ x c).
- Вызвана функция f2 с аргументом 4.
- Результат выполнения функции f2 равен 9, так как 4 + 5 = 9.
- Значение переменной c изменено на 7.
- Создана глобальная переменная c.
- Вызвана функция f2 с аргументом 4.
- Результат выполнения функции f2 равен 9, так как 4 + 7 = 11.
- Вызвана функция f1 с аргументом 4.
- Результат выполнения функции f1 равен 11, так как 4 + 7 = 11.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д