у меня есть:Как создать одно слово из аргументов макросов в Common Lisp?
(defmacro test (a b c)
`'(,a ,b ,c))
Запуск (test apple banana cuba)
дает (APPLE BANANA CUBA)
, как ожидалось.
Как сделать макропроизводство APPLEBANANACUBA?
Я пробовал:
(defmacro test (a b c)
`'(,a,b,c))
но работает (test ant bites chris)
все еще возвращает (ANT BITES CHRIS)
в виде списка из трех отдельных аргументов.
Я пробовал варианты, и ни один из них не работает. Как это:
(defmacro test (a b c)
`(apply #'concatenate 'symbol '(,a ,b ,c)))
Очевидно, что это ошибки вне, потому что «символ не является допустимым типом вывода для СЦЕПИТЬ.
Я уверен, что это является одним из основных недоразумений с моей стороны о том, как работают макросы, и есть простой способ сделать это. Что мне не хватает?
@JoshuaTaylor Несмотря на то, другой вопрос включает в себя информацию, является ответом на этот вопрос, он встроен во многие другие сведения как в вопрос, так и в ответ. Вы можете поместить ссылку в комментарий к этому вопросу, говоря, что там есть «больше» информации, но называть два вопроса «одинаковыми» (это то, что означает дубликаты) является плохим сервисом для всех, кто может воспользоваться быстрым ясным решением в будущее. Достаточно, но, пожалуйста, передумайте. –