"Функции более высокого порядка. Функциональный аргумент, функциональное значение. Способы композиции функций" - композиции и функции высокого порядка - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д