Как я могу определить макрос в LISP с N аргументами? - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь определить макрос в LISP, например, эту функцию вызывающего абонента в другом файле

(set_name name My name is Timmy)

(set_name occupation I am a doctor )

(defmacro set_name (list)
   (print list)
)

1 Ответ

6 голосов
/ 16 апреля 2020

Как и в обычных функциях, используйте &rest, чтобы собрать все оставшиеся аргументы в список.

(defmacro set_name (name &rest list) 
  `(setq ,name ',list))
(set_name occupation I am a doctor)
(print occupation)

Это выведет (I AM A DOCTOR)

Вам нужно указать ,list в расширении, поэтому он не будет пытаться оценить все символы как переменные.

...