"Функции более высокого порядка. Функциональный аргумент, функциональное значение. Способы композиции функций" - композиции и функции высокого порядка - 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
Листинг программы
  1. (defun f1 (x) (+ x c))
  2.  
  3. ==> f1
  4.  
  5. (f1 4)
  6.  
  7. Assoc: Символ c не имеет значения (не связан).
  8. ==> ERRSTATE
  9.  
  10. (let ((c 5))
  11.    (defun f2 (x) (+ x c)))
  12.  
  13. ==> f2
  14.  
  15. (f2 4)
  16.  
  17. ==> 9 ;; 4+5=9
  18.  
  19. (setq c 7)  ;; определим ГЛОБАЛЬНУЮ переменную
  20.  
  21. ==> 7
  22. Создана глобальная переменная c
  23.  
  24. (f2 4)
  25.  
  26. ==> 9  ;; по-прежнему видит локальную переменную из замыкания
  27.  
  28. (f1 4)
  29.  
  30. ==> 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы