Определить, что делает следующий макрос - Lisp

Узнай цену своей работы

Формулировка задачи:

Определить, что делает следующий макрос. В случае возникновения ошибки объяснить причину ее появления.
   
(delmacro аргумент (форма)
     (list '(lambda (x) x) (саr форма)))

Решение задачи: «Определить, что делает следующий макрос»

textual
Листинг программы
(defmacro аргумент (форма)
     (list '(lambda (x) x) (car форма)))
 
==> аргумент
 
(аргумент (+ 3 4 5))
 
Assoc: Символ + не имеет значения (не связан).
 
==> ERRSTATE
 
(аргумент ((+ 3 4) (- 3 4)))
 
==> 7

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

  1. Создается макрос с именем аргумент.
  2. Форма макроса принимает один аргумент.
  3. Внутри макроса используется функция lambda для создания анонимной функции.
  4. Анонимная функция принимает один аргумент x.
  5. Внутри анонимной функции используется оператор x для передачи значения аргумента x.
  6. Возвращаемым значением макроса является результат вызова функции car с аргументом форма.
  7. При вызове макроса аргумент с аргументом (+ 3 4 5) создается анонимная функция с одним аргументом.
  8. Анонимная функция вызывается с аргументом (+ 3 4 5).
  9. Возвращаемым значением является результат вызова функции car с аргументом (+ 3 4 5).
  10. Результат вызова макроса аргумент с аргументом (+ 3 4 5) равен результату вызова функции car с аргументом (+ 3 4 5).
  11. При вызове макроса аргумент с аргументом ((+ 3 4) (- 3 4)) создается анонимная функция с одним аргументом.
  12. Анонимная функция вызывается с аргументом ((+ 3 4) (- 3 4)).
  13. Возвращаемым значением является результат вызова функции car с аргументом ((+ 3 4) (- 3 4)).
  14. Результат вызова макроса аргумент с аргументом ((+ 3 4) (- 3 4)) равен результату вызова функции car с аргументом ((+ 3 4) (- 3 4)).
  15. При вызове макроса аргумент с аргументом ((+ 3 4) (- 3 4)) создается анонимная функция с одним аргументом.
  16. Анонимная функция вызывается с аргументом ((+ 3 4) (- 3 4)).
  17. Возвращаемым значением является результат вызова функции car с аргументом ((+ 3 4) (- 3 4)).
  18. Результат вызова макроса аргумент с аргументом ((+ 3 4) (- 3 4)) равен результату вызова функции car с аргументом ((+ 3 4) (- 3 4)).
  19. При вызове макроса аргумент с аргументом ((+ 3 4) (- 3 4)) создается анонимная функция с одним аргументом.
  20. Анонимная функция вызывается с аргументом ((+ 3 4) (- 3 4)).
  21. Возвращаемым значением является результат вызова функции car с аргументом ((+ 3 4) (- 3 4)).
  22. Результат вызова макроса аргумент с аргументом ((+ 3 4) (- 3 4)) равен результату вызова функции car с аргументом ((+ 3 4) (- 3 4)).

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

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

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