我想通过编写一个宏来编写一个ACL模块,这个宏是为了检查宏中每个函数调用的结果,如果返回false,那么ACL将失败而不运行下面的函数调用。如果返回true并且还有函数调用来检查,那么检查以下内容直到最后一个。clojure宏unquote函数调用的拼接列表
(defmacro checks
[head & tail]
`(let [status# ~head]
(if (and (true? status#)
(seq '~tail))
(checks [email protected])
status#)))
我会打电话给此宏是这样的:
(checks (module1 args) (module2 args))`
但这将在宏定义失败(check [email protected])
。问题是我想要Unquote拼接列表,但不调用列表中的每个函数。
只是提示,不要使用反引号来格式化大段代码。通过突出显示它并按ctrl + k缩进四个空格。 – Carcigenicate
宏和宏不会一样吗? –
谢谢你们的评论。 –