Я пытаюсь создать макрос, который принимает некоторые параметры ключевых слов, и только если параметр определен, добавьте записи в список. Разделив это, следующий код должен показать, что мне нужно.Создание символа ключевого слова
(defun add-if-not-null (var lst)
(if (not (null var))
(append (cons (***) (cons ver '())) lst)))
Эти три звездочки показывают часть, которую я пытаюсь выяснить. Это в основном принимает имя символа и превращает его в представление ключевых слов. например ширина преобразуется: ширина
(let ((width 100))
(add-if-not-null (width '())))
Если вернуться
(:width 100)
Я использую сл-кто, чтобы создать представление SVG и в основном хотят, чтобы установить такие атрибуты, как ширина и высота, если они указаны в качестве параметров к моему макросу, который обертывает документ.
возможно дубликат [Common Lisp Программной Keyword] (http://stackoverflow.com/questions/211717/common-lisp-programmatic-keyword) (заметим, что вы может получить строку '' WIDTH "' из символа 'width' на' (symbol-name 'width) '). –
Также см. [Как создать символ ключевого слова из строки?] (Http://stackoverflow.com/q/24066178/1281433) –
Ни один из них не соответствует законопроекту, как я упоминал ниже. Мне нужно найти способ превратить имя переменной/параметра в параметр ключевого слова. Если мне нужно преобразовать его в строку, как это хорошо. Если вы посмотрите на пример, то ответы до сих пор не дали бы правильного решения. – Sprucial