【发布时间】:2013-01-31 08:39:00
【问题描述】:
我希望能够做到这一点:
(mapcar #'quote '(1 2 3 4))
得到这个
('1'2'3'4)
但是,由于 QUOTE 是一种特殊的形式,它不能被调用。
我已经尝试将其宏化:
(defmacro quoter (&rest args)
`(loop for arg in ,@args collect (quote arg)))
(quoter '(1 2 3 4 ))
但正如我所料......
(LOOP FOR ARG IN '(1 2 3 4)
COLLECT 'ARG)
将输入转换为字符串,然后再转换为符号是行不通的——我可能有传入的表单,而不仅仅是原子。
我确定我在这里遗漏了一些东西。 :-)
【问题讨论】:
标签: common-lisp macrodef