【发布时间】:2013-10-15 04:07:12
【问题描述】:
这是我的宏定义:
*(defmacro run-test (test)
`(format t "Run test ~a ... ~a" ',test ,test))
*(run-test (= 1 1))
Run test (= 1 1) ... T
NIL
现在一切正常,所以我定义了第二个宏(运行多个测试):
*(defmacro run-tests (&body body)
`(loop for tc in ',body
do (run-test tc)))
* (run-tests (= 2 (1+ 1)) (= 1 1))
Run test TC ... (= 2 (1+ 1) Run test TC ... (= 1 1)
这个结果不是我想要的,我希望 tc 的每个值都被替换为 sexp 并在运行测试中评估该值。我试着换行
do (run-test tc)
与
do (run-test ,tc)
但这表示错误
未定义变量:TC
我怎样才能改变它以获得正确的结果?
【问题讨论】:
标签: macros lisp common-lisp