Определить макрос - Lisp

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

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

Определить макрос, который возвращает свой вызов.

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

textual
Листинг программы
  1. (defmacro self (&rest arg)
  2.  `(quote (self ,@arg)))
  3.  
  4. ==> self
  5.  
  6. (self 1 2 3)
  7.  
  8. ==> (self 1 2 3)
  9.  
  10. (self (+ a (/ 6 (+ b 5))))
  11.  
  12. ==> (self (+ a (/ 6 (+ b 5))))

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

В данном коде определен макрос с именем self. Данный макрос принимает произвольное количество аргументов, которые перебираются с помощью &rest arg. Внутри макроса используется функция quote, которая возвращает свою строку аргумента без изменений. Затем с помощью self применяется к каждому аргументу в цикле. При вызове макроса self с аргументами 1, 2, 3, результат будет следующим: (self 1 2 3). При вызове макроса self с аргументом (+ a (/ 6 (+ b 5))) результат будет следующим: (self (+ a (/ 6 (+ b 5)))

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


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

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

11   голосов , оценка 4.091 из 5

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

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

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