【发布时间】:2019-06-26 00:40:59
【问题描述】:
我想写一个宏
(defmacro params [] 'a 'b 'c)
将在这样的地方使用
;; without macro
(fnc a b c)
;; with macro
(fnc params) => (fnc a b c)
如果您发现这可以通过 C 的 #define 轻松完成,这只是一个文本替换
但这只是返回一个'c
【问题讨论】:
-
您能否补充一下您为什么要这样做(一个更完整的示例)?
-
我观察到我正在编写的函数有一个共同的模式。即我定义了一个带有参数 a,b,c 的函数。现在这个函数的主体调用了许多具有相同参数的其他函数。现在我不想到处重写 a,b,c。如果每个 defns arglist 都有一个像上面这样的宏,那么我可以在我输入 a、b、c 的函数调用的地方使用它。但是我认为我可以使用 postwalk-replace 之类的代码转换工具来实现这一点。如果我仍然不清楚@AlanThompson,请告诉我