一个特定的宏在其体内运行每个表达式,在每个表达式之间交错原子,并收集结果。
这适用于硬编码表达式,但是如果我想动态生成一系列表达式插入到宏调用的主体中,那显然不会起作用,因为这将在宏之后进行评估已经完成了它的工作。
我认为解决方案是编写自己的宏来生成我需要的表达式,但我不确定是否会在外部宏之前进行评估。
我尝试过类似的东西,但它不起作用:
(mac genexpr (list)
(map (fn (e) `(something ,e)) list))
答案 0 :(得分:5)
尝试使用begin
(方案)或progn
(常见的lisp)表单。看起来你正在使用arc,appears to name这构造do
。
(mac genexpr (list)
`(do ,@(map (fn (c) `(something ,e)) list)))