Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macros 如何在编译时在宏调用中生成多个表达式?_Macros_Arc Lisp - Fatal编程技术网

Macros 如何在编译时在宏调用中生成多个表达式?

Macros 如何在编译时在宏调用中生成多个表达式?,macros,arc-lisp,Macros,Arc Lisp,特定宏在其主体中运行每个表达式,在每个表达式之间交错一个原子,并收集结果 这对硬编码表达式很有效,但如果我想动态生成一系列表达式插入宏调用体中,这显然是行不通的,因为这将在宏完成其工作后进行计算 我想解决办法是编写自己的宏来生成所需的表达式,但我不确定在外部宏之前会对其求值 我试过这样的方法,但没用: (mac genexpr (list) (map (fn (e) `(something ,e)) list)) 尝试使用begin(方案)或progn(公共lisp)表单。看起来您使用的是

特定宏在其主体中运行每个表达式,在每个表达式之间交错一个原子,并收集结果

这对硬编码表达式很有效,但如果我想动态生成一系列表达式插入宏调用体中,这显然是行不通的,因为这将在宏完成其工作后进行计算

我想解决办法是编写自己的宏来生成所需的表达式,但我不确定在外部宏之前会对其求值

我试过这样的方法,但没用:

(mac genexpr (list)
  (map (fn (e) `(something ,e)) list))

尝试使用
begin
(方案)或
progn
(公共lisp)表单。看起来您使用的是arc,这个构造
do

(mac genexpr (list)
  `(do ,@(map (fn (c) `(something ,e)) list)))

尝试使用
begin
(方案)或
progn
(公共lisp)表单。看起来您使用的是arc,这个构造
do

(mac genexpr (list)
  `(do ,@(map (fn (c) `(something ,e)) list)))

您是否有一些示例输入以及预期输出?很难精确地看出您正在尝试做什么。您是否有一些示例输入以及预期输出?很难准确地看出你想做什么。