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

Объяснение кода листинга программы

  1. Написана функция f1, которая принимает один аргумент x и возвращает результат (+ x c).
  2. Вызвана функция f1 с аргументом 4.
  3. В результате выполнения функции f1 происходит ошибка, так как переменная c не имеет значения.
  4. Введен блок let, который создает локальную переменную c со значением 5.
  5. Внутри блока определена функция f2, которая также принимает один аргумент x и возвращает результат (+ x c).
  6. Вызвана функция f2 с аргументом 4.
  7. Результат выполнения функции f2 равен 9, так как 4 + 5 = 9.
  8. Значение переменной c изменено на 7.
  9. Создана глобальная переменная c.
  10. Вызвана функция f2 с аргументом 4.
  11. Результат выполнения функции f2 равен 9, так как 4 + 7 = 11.
  12. Вызвана функция f1 с аргументом 4.
  13. Результат выполнения функции f1 равен 11, так как 4 + 7 = 11.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.5 из 5
Похожие ответы